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

Codeforces\ Round\ 930(C.Bitwise Operation Wizard)

C o d e f o r c e s R o u n d 930 ( C . B i t w i s e O p e r a t i o n W i z a r d ) \Huge{Codeforces\ Round\ 930(C.Bitwise Operation Wizard)} Codeforces Round 930(C.BitwiseOperationWizard)

文章目录

  • 题意
  • 思路
    • 注意
  • 标程

题目链接:[B.Bitwise Operation Wizard](Problem - C - Codeforces)

本题是一道交互题,好久没做交互题了,记录一下。

题意

给出一个长度为 n n n ( 0 , n − 1 ) (0,n-1) (0,n1)的排列组合序列,要求找到下标 i , j i,j i,j,使得 p i X O R p j {\color{Red} p_i~XOR~p_j} pi XOR pj的值最大。

其中,题目给出不超过 3 n 3n 3n次查询:

查询格式为:? a b c d ( 0 ≤ a , b , c , d < n 0 \le a,b,c,d < n 0a,b,c,d<n)

返回为: x = ( p a ∣ p b ) x = (p_a \mid p_b) x=(papb) y = ( p c ∣ p d ) y = (p_c \mid p_d) y=(pcpd),返回字符 ′ < ′ , ′ > ′ , ′ = ′ '<','>','=' <,>,=分别对应 x < y , x > y , x = y x<y,x>y,x=y x<y,x>y,x=y三种情况。

最后输出结果:! i j

思路

  1. 首先考虑结果,易知:当 p j p_j pj n − 1 n-1 n1时, p i p_i pi ! ( p j ) !(p_j) !(pj)时, p i X O R p j {\color{Red} p_i~XOR~p_j} pi XOR pj的值最大。
  2. 所以我们可以用? a a b b,在 n n n次内找出最大值的下标,即 p j p_j pj j j j
  3. 然后我们用? j mx j i,在 n n n次内找出所有与 p j p_j pj进行或运算之后的最大值下标
  4. 然后我们枚举所有的下标,找出最小的 p i p_i pi,即为所求。
  5. 易证:所有与 p j p_j pj进行或运算后的结果相等的数字中,最小的数与 p j p_j pj进行 X O R XOR XOR运算结果最大

注意

在交互题中,交互过程中的输入输出需要刷新输入输出,c/c++通常使用fflush(stdout)cout.flush()

标程

char query(int a, int b, int c, int d) {char ch;cout << "? " << a <<' '<< b <<' '<< c <<' '<< d << endl;cout.flush();cin >> ch;cout.flush();return ch;
}void Solved() {int n; cin >> n;int res1 = 0, res2 = 0, mx = 0;vector<int> a;for(int i = 1; i < n; i ++ ) {char ch = query(res1, res1, i, i);if(ch == '<') res1 = i;}a.push_back(0);for(int i = 1; i < n; i ++ ) {char ch = query(mx, res1, i, res1);if(ch == '<') {mx = i; a.clear(); a.push_back(i);}if(ch == '=') a.push_back(i);}res2 = a.front();for(int i = 1; i < a.size(); i ++ ) {char ch = query(res2, res2, a[i], a[i]);if(ch == '>') res2 = a[i];}cout << "! " << res1 << ' ' << res2 << endl;cout.flush();
}
http://www.lryc.cn/news/322031.html

相关文章:

  • 监控系统prometheus+grafana+发送告警信息
  • IoT 物联网场景中如何应对安全风险?——青创智通
  • 滴滴基于 Clickhouse 构建新一代日志存储系统
  • 虚拟主机去除index.php目录地址
  • JD商品详情原数据 API 返回值说明
  • python日常刷题(一)
  • Python 利用pandas和mysql-connector获取Excel数据写入到MySQL数据库
  • Stable Diffusion训练图片时,简陋的数据处理
  • 如何在ubuntu 18.04中升级python 3.6到3.7
  • python爬虫基础实验:通过DBLP数据库获取数据挖掘顶会KDD在2023年的论文收录和相关作者信息
  • 简单记录一次帮维修手机经历(Vivo x9)
  • ap聚类是什么
  • C数据类型(C语言)---变量的类型决定了什么?
  • axios、axios二次封装、api解耦
  • HTML 特殊元素:展示PDF、展示JSON 数据
  • 算法·动态规划Dynamic Programming
  • 鸿蒙Harmony应用开发—ArkTS-转场动画(共享元素转场)
  • 【C语言】循环语句(语句使用建议)
  • Spring Data访问Elasticsearch----响应式Reactive存储库
  • 堆排序(c语言)
  • 开源IT自动化运维工具Ansible解析
  • 【C++】仿函数优先级队列反向迭代器
  • UE4_调试工具_绘制调试球体
  • 机器人路径规划:基于冠豪猪优化算法(Crested Porcupine Optimizer,CPO)的机器人路径规划(提供MATLAB代码)
  • 探索.NET中的定时器:选择最适合你的应用场景
  • 5467: 【搜索】流浪奶牛
  • spring boot整合elasticsearch实现查询功能
  • 白嫖阿里云程序员日历
  • ubuntu20.04搭建rtmp视频服务
  • Request failed with status code 504,Gateway time out