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

news/2025/2/23 4:02:00/

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.ppmy.cn/news/1390291.html

相关文章

旅游管理系统 |基于springboot框架+ Mysql+Java+Tomcat的旅游管理系统设计与实现(可运行源码+数据库+设计文档)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 目录 前台功能效果图 管理员功能登录前台功能效果图 系统功能设计 数据库E-R图设计 lunwen参考 摘要 研究…

MySQL常用命令集

最常用的显示命令&#xff08;在MYSQL环境中的命令&#xff0c;后面都带一个分号作为命令结束符&#xff09; 1、显示数据库列表。 show databases; 2、显示库中的数据表&#xff1a; use mysql; show tables; 3、显示数据表的结构&#xff1a; describe 表名; 4、建库…

【算法】雪花算法生成分布式 ID

SueWakeup 个人中心&#xff1a;SueWakeup 系列专栏&#xff1a;学习Java框架 个性签名&#xff1a;人生乏味啊&#xff0c;我欲令之光怪陆离 本文封面由 凯楠&#x1f4f7; 友情赞助播出! 目录 1. 什么是分布式 ID 2. 分布式 ID 基本要求 3. 数据库主键自增 4. UUID 5. S…

已解决redis.clients.jedis.exceptions.JedisBusyException:无法处理命令异常的正确解决方法,亲测有效!!!

已解决redis.clients.jedis.exceptions.JedisBusyException&#xff1a;无法处理命令异常的正确解决方法&#xff0c;亲测有效&#xff01;&#xff01;&#xff01; 目录 问题分析 报错原因 解决思路 解决方法 总结 博主v&#xff1a;XiaoMing_Java 在使用Redis和Jedis客…

牛客周赛 Round 37(A,B,C,D,E,F)

比赛链接 出题人是古希腊掌管BFS的神。 这场简单&#xff0c;CEF都可以用BFS来写。话说回来&#xff0c;常规做法是&#xff0c;B是二分查找&#xff0c;C考了同余的性质&#xff0c;D是推结论或者直接暴力&#xff0c;E是BFS或者dijkstra&#xff0c;F是状压DP。 每个题的解…

单片机LED灯闪烁

延时函数计算&#xff08;相关代码生成&#xff09;&#xff1a; #include "reg52.h" #include <INTRINS.H> void Delay500ms() //11.0592MHz {unsigned char i, j, k;_nop_();_nop_();i 22;j 3;k 227;do{do{while (--k);} while (--j);} while (--i); }vo…

【鸿蒙HarmonyOS开发笔记】通知模块之为通知添加行为意图

概述 WantAgent提供了封装行为意图的能力&#xff0c;这里所说的行为意图主要是指拉起指定的应用组件及发布公共事件等能力。HarmonyOS支持以通知的形式&#xff0c;将WantAgent从发布方传递至接收方&#xff0c;从而在接收方触发WantAgent中指定的意图。例如&#xff0c;在通…

python爬虫基础实验:通过DBLP数据库获取数据挖掘顶会KDD在2023年的论文收录和相关作者信息

Task1 读取网站主页整个页面的 html 内容并解码为文本串&#xff08;可使用urllib.request的相应方法&#xff09;&#xff0c;将其以UTF-8编码格式写入page.txt文件。 Code1 import urllib.requestwith urllib.request.urlopen(https://dblp.dagstuhl.de/db/conf/kdd/kdd202…