当前位置: 首页 > news >正文

Codeforces Round 1063 (Div. 2) 补题记录

Codeforces Round 1063 (Div. 2) 补题记录

D - Diadrash

题目大意:

本题为交互题,存在一个 \([0, \ n - 1]\) 的排列 \(p\),以及 \(q\) 个区间。

每次询问 "\(? \ l \ r\)" 会返回区间 \([l, \ r]\)\(Mex\),最多可以询问 \(30\) 次。

问这 \(q\) 个区间的最大 \(Mex\) 为多少。

思路:

首先我们可以发现两个性质:

  • \(A = [l, \ r], B = [L, \ R]\),若 \(A\)\(B\) 所包含,则 \(Mex(A) \leq Mex(B)\)

  • \(Mex(L, \ R) = min(min(p_1, \dots, p_{L-1}), min(p_{R+1}, \dots, p_n))\)

首先我们可以利用第一个性质减少区间的数量。而对于第二个性质,我们可以得到 \(Mex([L, \ R]) = min(Mex([L, \ n]), Mex([1, \ R]))\)。证明如下:

  • \(A(L) = Mex([L, \ n]), \ B(R) = Mex([1, \ R])\)

  • 由性质二可得:\(A(L) = min(p_1, \dots, p_{L - 1}), \ B(R) = min(p_{R + 1}, \dots, p_n)\)

  • \(Mex([L, \ R]) = min(A(L), B(R))\)

然后我们设 \(f(i) = Mex([L_i, \ R_i]) = min(A(L_i), B(R_i))\)。那么有:

\[f(i) = \begin{cases} A(L_i), \ A(L_i) > B(R_i) \\ \\ B(R_i), \ A(L_i) \leq B(R_i) \end{cases} \]

通过对区间排序,可以使得当 \(i\) 增大时,\(L_i\)\(R_i\) 都是单调不减的。对于 \(A(L_i)\),当 \(i\) 增大时,\(L_i\) 增大,\([L_i, \ n]\) 所覆盖区间缩小,因此\(A(L_i)\) 要么不变要么减小;而对于 \(B(R_i)\),当 \(i\) 增大时,\(R_i\) 增大,\([1, \ R_i]\) 所覆盖区间扩大,因此\(B(R_i)\) 要么不变要么增大。

因此,我们对所有区间用二分模拟三分的方法,当 \(f(i) = A(L_i)\) 时,缩小 \(i\),当 \(f(i) = B(R_i)\) 时,增大 \(i\),同时更新答案即可。

code:

#include <bits/stdc++.h>
using namespace std;// #define endl '\n'
#define i64 long longvoid MuBai() {int n, q;cin >> n >> q;vector<pair<int, int>> range(q), merged;for (int i = 0; i < q; i ++ ) {cin >> range[i].first >> range[i].second;}ranges::sort(range, [&](auto A, auto B) {if (A.first == B.first) return A.second > B.second;return A.first < B.first;});int maxRight = -1;for (int i = 0; i < q; i ++ ) {if (range[i].second > maxRight) {merged.emplace_back(range[i]);maxRight = range[i].second;}}function<int(int, int)> ask = [&](int l, int r) {int res = 0;cout << "? " << l << ' ' << r << endl;cin >> res;return res;};int l = 1, r = merged.size(), ans = -1;while (l <= r) {int mid = (l + r) >> 1;int left = merged[mid - 1].first;int right = merged[mid - 1].second;int A = ask(left, n), B = ask(1, right);ans = max(ans, min(A, B));if (A > B) l = mid + 1;else r = mid - 1;}cout << "! " << ans << endl;
}int main() {// ios::sync_with_stdio(false);// cin.tie(nullptr), cout.tie(nullptr);int t; cin >> t;while (t -- ) MuBai();return 0;
}// 0 3 1 2
// 3 5 0 1 4 2
// 0 1 2 3
http://www.gsyq.cn/news/64180.html

相关文章:

  • 2025最新宠物抓伤应急护理液品牌推荐!宠物抓伤消毒液/宠物消杀/宠物抓伤创面消毒液,专业宠物消杀品权威榜单发布及选择指南,守护爱宠与家人健康
  • 【IEEE出版 | EI检索】第七届国际科技创新学术交流大会暨新能源科学与电力工程国际学术会议(NESEE 2025)
  • DNNRegression(pytorch)
  • 2025最新宠物抓伤应急护理液品牌推荐!宠物抓伤消毒液/宠物消杀品/宠物抓伤创面消毒液,专业宠物消杀品权威榜单发布,守护健康安全
  • Python+Selenium+PO设计模式实战指南
  • 数据泄露已成为现实威胁,你的Salesforce安全做好了吗?
  • 2025年11月SEM扫描电镜厂家推荐榜:进口/国产/日立/国仪/钨灯丝/FIB/日立冷场/电子/场发射/高分子/超高分辨率/扫描电镜品牌综合参考指南,上海富泰微——微观视界的硬核担当
  • 2025年11月深圳网站建设公司TOP榜:知名网站建售/外贸网站建设公司后保障双维度解析
  • 机器学习在医疗领域的创新应用
  • 2025年橡塑保温板直销厂家权威推荐榜单:B1级橡塑板/橡塑隔音棉‌/橡塑海绵板‌源头厂家精选
  • 2025年煤矿刮板机供货厂家权威推荐榜单:刮板机/刮板机链轮/刮板机输送机源头厂家精选
  • Branch-GAN:一种高质量写作对抗模型生成方法
  • Vue 3 + Vite + Router + Pinia + Element Plus + Monorepo + qiankun 构建企业级中后台前端框架
  • 涂鸦智能:扫地机器人一体化解决方案
  • 2025年中国十大GEO全域搜索营销专业公司推荐:靠谱的GE
  • 2025年11月电磁吸盘厂家推荐榜:五大厂家综合对比与权威评价
  • 2025年度十大AI手机推荐,有高刷新率屏幕的AI手机、AI
  • 数组和张量
  • 2025年十大AI获客手机服务排行榜,新测评精选AI获客手机
  • 佛山口碑好的桶装水配送专业公司推荐:本地靠谱的桶装水配送品牌
  • PostgreSQL里的JSONB到底怎么玩
  • Castle.core AOP
  • 05.再修改一次网站练习Git使用流程
  • 2025年沈阳大连天津石家庄郑州高性价比的自助KTV场所、服
  • 成都火锅团建2025年口碑榜,吃货们都在推荐这些店,四川火锅/市井火锅/川渝火锅/特色美食成都本地人推荐的火锅
  • 2025 年气相防锈膜厂家最新推荐榜,技术实力与市场口碑深度解析防锈热收缩膜/防锈抗静电膜/防锈纸/防锈干燥剂/防锈母粒/防锈粉末/防锈盒/防锈管/防锈液公司推荐
  • 习题解析之:完美立方数
  • pandas 处理带有 合并的单元格
  • 代码跑通算复现成功吗
  • 2025年工业无氧烘箱设备厂家TOP5推荐:HMDS 无氧烘箱、真空无氧烘箱、充氮无氧烘箱、高温无氧烘箱、HMDS 真空无氧烘箱、从精密制造到行业适配的务实之选