CF1556D-Take a Guess【交互】
正题
题目链接:https://codeforces.com/contest/1556/problem/D
题目大意
现在有nnn个你不知道的数字,你有两种询问操作
- 询问两个下标的数字的andandand
- 询问两个下标的数字的ororor
要求在2n2n2n次操作以内求出第kkk小的数字
1≤n≤104,0≤ai≤1091\leq n\leq 10^4,0\leq a_i\leq 10^91≤n≤104,0≤ai≤109
解题思路
显示我们取andandand之后为000且ororor之后为111的位就可以得到两个数字的异或,所以我们可以通过2n−22n-22n−2次询问得到所有数字之间的异或值,那么此时我们就只需要知道一个数字就可以得到其他所有的。
然后考虑怎么求某一个数字,我们前面的步骤中拿111去ororor和andandand其他所有的值,不难发现每次我们除了知道异或值还能确定这两个数字异或之后为000的位上的具体值。
那么我们不知道位的肯定是111和其他所有数字都不同的,也就是这些位上除了111其他数字都相同,那么我们直接拿另外两个数and/orand/orand/or一下再取这些位上的值就好了。
这样询问次数就是2n−12n-12n−1次,可以通过本题。
code
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=1e4+10;
int n,k,a[N],p[N];
int main()
{scanf("%d%d",&n,&k);int MS=(1<<30)-1,ans=0,bns=0;for(int i=2,x,y;i<=n;i++){printf("and 1 %d\n",i);fflush(stdout);scanf("%d",&x);printf("or 1 %d\n",i);fflush(stdout);scanf("%d",&y);y^=MS;p[i]=(MS^(x|y));ans|=x;bns|=y;}int c=MS^(ans|bns),cns;printf("and 2 3\n");fflush(stdout);scanf("%d",&cns);cns&=c;a[1]=(c^cns)|ans;for(int i=2;i<=n;i++)a[i]=a[1]^p[i];sort(a+1,a+1+n);printf("finish %d\n",a[k]);fflush(stdout);return 0;
}
CF1556D-Take a Guess【交互】相关推荐
- cf1556D. Take a Guess
cf1556D. Take a Guess 题意: 交互题 有n个数和k个询问,你最多只能询问2n次,可以询问任意两个位置数的or或者是and,然后输出这n个数的第k大数 题解: 先说个结论: x + ...
- etcd 笔记(05)— etcd 代码结构、各模块功能、整体架构、各模块之间的交互、请求和应答流程
1. etcd 项目结构和功能 etcd 项目代码的目录结构如下: $ tree ├── auth ├── build ├── client ├── clientv3 ├── contrib ├── ...
- Plotly_绘图画图作图交互
20210601 https://zhuanlan.zhihu.com/p/87163211 画地图 今天就带你深入体验易于使用.文档健全.功能强大的开源 Python 绘图库 Plotly,教你如何 ...
- matplotlib交互模式
Matpotlib交互模式 在运行python程序时有时候需要生成以下的 动态图模式 来显示程序运行的结果 此时需要使用matplotlib的 交互模式 ,在Ipython中时默认使用交互模式的. 在 ...
- Cache 与Memory架构及数据交互
Cache 与Memory架构及数据交互
- Android 与 JS 的交互 以及 JS与Android 的交互
Android与JS交互以及JS与Android 的交互 是通过WebView互相调用方法 对于Android调用JS代码的方法有2种: 通过WebView的loadUrl() 通过WebView的e ...
- 【TCP/IP详解 卷一:协议】第十九章 TCP的交互数据流
19.1 引言 前一章我们介绍了TCP连接的建立与释放:三握四挥,以及状态转移图. TCP报文段分为:交互数据,以及成块数据(下一章介绍). 交互数据:例如telnet,ssh,这种类型的协议在大多数 ...
- 鸿蒙与微信小程序,鸿蒙远程交互应用 vs 微信小程序远程交互应用
原标题:鸿蒙远程交互应用 vs 微信小程序远程交互应用 鸿蒙的远程交互组件应用相对复杂,访问网络时,首先要配置网络权限,华为官方文档有问题,在此引用我老师配置的模板,见附件. 过程: 导入鸿蒙的网络请 ...
- js怎样和硬件交互_Node.js与JavaScript
有很多介绍nodejs的文章,也有很多教程,覆盖了服务器开发.桌面开发.移动端等等,但是鲜有文章明确的回答过一个问题:Node是什么? 这看起来是一个再简单过的问题了,真要答起来可不容易,不去深入研究 ...
- air调用java,AIR2.0入门教程:与Java应用交互
在之前的一篇文章中,我介绍了如何使用AIR2.0新增的NativeProcess类与本地进程进行交互和通讯,在那个例子里面我们使用了C++ 的代码,实际上只要是基于命令行的标准输入输出,AIR2.0的 ...
最新文章
- 是否存在分布式的【大泥球】?
- 算法导论一个让人很不爽的地方
- jsencrypt加密
- 数据结构 - 数组模拟一般队列
- 怎么用python写数据库_如何使用python对数据库(mysql)进行操作
- linux安全检测及防护,Linux安全检测及防护-单选题.doc
- 64位Ubuntu提示(...adb": error=2, 没有那个文件或目录)
- c++ builder 改变状态栏字体颜色等样式
- 10 分钟上手 Vim 编辑器,常用命令大盘点!
- 海量监控视频如何存储?
- Egg中使用DiyUpload实现图片批量上传
- 浅析ISO三体系标准认证对企业的作用
- linux64位系统 addr2line使用
- 阿里云服务器搬迁记录(2021年3月)
- LoRaWAN节点和网关接入阿里LinkWAN
- 2021美团校招(一)
- LeetCode——5805. 最小未被占据椅子的编号(The Number of the Smallest Unoccupied Chair)[中等]——分析及代码(Java)
- 用计算机弹九八k的乐谱,抖音计算器按出的音乐乐谱有哪些 抖音计算器乐谱汇总...
- PHP中无限极分类函数的实现
- Echarts- 饼图透明色效果图
热门文章
- 修改mongodb最大查询数_WebFlux系列(十二)MongoDB应用,新增、修改、查询、删除
- apache 2.4 httpd.conf 详解_Linux Centos服务子系统详解
- oracle+查表物理块数,如何统计一段时间内 发生在某个表上的 物理读写的块数
- dos下设置mysql密码_MySQL数据库之dos或wamp下修改mysql密码的具体方法
- javaweb应用开发与实践pdf_基于阿里云打造「云原生」Web应用——「懒猪行」Web应用开发实践...
- 算法设计与分析——贪心算法——单个出水口打水问题
- leetcode503. 下一个更大元素 II
- PHP做二次开发:本机安装ThinkCMF系统
- linux取设备分辨率,linux 获取系统屏幕分辨率
- php去掉多字节字符,PHP 面试题 - 如果没有 mb 系列函数,如何切割多字节字符串...