正题

题目链接:https://codeforces.com/contest/1556/problem/D


题目大意

现在有nnn个你不知道的数字,你有两种询问操作

  1. 询问两个下标的数字的andandand
  2. 询问两个下标的数字的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【交互】相关推荐

  1. cf1556D. Take a Guess

    cf1556D. Take a Guess 题意: 交互题 有n个数和k个询问,你最多只能询问2n次,可以询问任意两个位置数的or或者是and,然后输出这n个数的第k大数 题解: 先说个结论: x + ...

  2. etcd 笔记(05)— etcd 代码结构、各模块功能、整体架构、各模块之间的交互、请求和应答流程

    1. etcd 项目结构和功能 etcd 项目代码的目录结构如下: $ tree ├── auth ├── build ├── client ├── clientv3 ├── contrib ├── ...

  3. Plotly_绘图画图作图交互

    20210601 https://zhuanlan.zhihu.com/p/87163211 画地图 今天就带你深入体验易于使用.文档健全.功能强大的开源 Python 绘图库 Plotly,教你如何 ...

  4. matplotlib交互模式

    Matpotlib交互模式 在运行python程序时有时候需要生成以下的 动态图模式 来显示程序运行的结果 此时需要使用matplotlib的 交互模式 ,在Ipython中时默认使用交互模式的. 在 ...

  5. Cache 与Memory架构及数据交互

    Cache 与Memory架构及数据交互

  6. Android 与 JS 的交互 以及 JS与Android 的交互

    Android与JS交互以及JS与Android 的交互 是通过WebView互相调用方法 对于Android调用JS代码的方法有2种: 通过WebView的loadUrl() 通过WebView的e ...

  7. 【TCP/IP详解 卷一:协议】第十九章 TCP的交互数据流

    19.1 引言 前一章我们介绍了TCP连接的建立与释放:三握四挥,以及状态转移图. TCP报文段分为:交互数据,以及成块数据(下一章介绍). 交互数据:例如telnet,ssh,这种类型的协议在大多数 ...

  8. 鸿蒙与微信小程序,鸿蒙远程交互应用 vs 微信小程序远程交互应用

    原标题:鸿蒙远程交互应用 vs 微信小程序远程交互应用 鸿蒙的远程交互组件应用相对复杂,访问网络时,首先要配置网络权限,华为官方文档有问题,在此引用我老师配置的模板,见附件. 过程: 导入鸿蒙的网络请 ...

  9. js怎样和硬件交互_Node.js与JavaScript

    有很多介绍nodejs的文章,也有很多教程,覆盖了服务器开发.桌面开发.移动端等等,但是鲜有文章明确的回答过一个问题:Node是什么? 这看起来是一个再简单过的问题了,真要答起来可不容易,不去深入研究 ...

  10. air调用java,AIR2.0入门教程:与Java应用交互

    在之前的一篇文章中,我介绍了如何使用AIR2.0新增的NativeProcess类与本地进程进行交互和通讯,在那个例子里面我们使用了C++ 的代码,实际上只要是基于命令行的标准输入输出,AIR2.0的 ...

最新文章

  1. 是否存在分布式的【大泥球】?
  2. 算法导论一个让人很不爽的地方
  3. jsencrypt加密
  4. 数据结构 - 数组模拟一般队列
  5. 怎么用python写数据库_如何使用python对数据库(mysql)进行操作
  6. linux安全检测及防护,Linux安全检测及防护-单选题.doc
  7. 64位Ubuntu提示(...adb": error=2, 没有那个文件或目录)
  8. c++ builder 改变状态栏字体颜色等样式
  9. 10 分钟上手 Vim 编辑器,常用命令大盘点!
  10. 海量监控视频如何存储?
  11. Egg中使用DiyUpload实现图片批量上传
  12. 浅析ISO三体系标准认证对企业的作用
  13. linux64位系统 addr2line使用
  14. 阿里云服务器搬迁记录(2021年3月)
  15. LoRaWAN节点和网关接入阿里LinkWAN
  16. 2021美团校招(一)
  17. LeetCode——5805. 最小未被占据椅子的编号(The Number of the Smallest Unoccupied Chair)[中等]——分析及代码(Java)
  18. 用计算机弹九八k的乐谱,抖音计算器按出的音乐乐谱有哪些 抖音计算器乐谱汇总...
  19. PHP中无限极分类函数的实现
  20. Echarts- 饼图透明色效果图

热门文章

  1. 修改mongodb最大查询数_WebFlux系列(十二)MongoDB应用,新增、修改、查询、删除
  2. apache 2.4 httpd.conf 详解_Linux Centos服务子系统详解
  3. oracle+查表物理块数,如何统计一段时间内 发生在某个表上的 物理读写的块数
  4. dos下设置mysql密码_MySQL数据库之dos或wamp下修改mysql密码的具体方法
  5. javaweb应用开发与实践pdf_基于阿里云打造「云原生」Web应用——「懒猪行」Web应用开发实践...
  6. 算法设计与分析——贪心算法——单个出水口打水问题
  7. leetcode503. 下一个更大元素 II
  8. PHP做二次开发:本机安装ThinkCMF系统
  9. linux取设备分辨率,linux 获取系统屏幕分辨率
  10. php去掉多字节字符,PHP 面试题 - 如果没有 mb 系列函数,如何切割多字节字符串...