正题

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


题目大意

现在有\(n\)个你不知道的数字,你有两种询问操作

  1. 询问两个下标的数字的\(and\)
  2. 询问两个下标的数字的\(or\)

要求在\(2n\)次操作以内求出第\(k\)小的数字

\(1\leq n\leq 10^4,0\leq a_i\leq 10^9\)


解题思路

显示我们取\(and\)之后为\(0\)且\(or\)之后为\(1\)的位就可以得到两个数字的异或,所以我们可以通过\(2n-2\)次询问得到所有数字之间的异或值,那么此时我们就只需要知道一个数字就可以得到其他所有的。

然后考虑怎么求某一个数字,我们前面的步骤中拿\(1\)去\(or\)和\(and\)其他所有的值,不难发现每次我们除了知道异或值还能确定这两个数字异或之后为\(0\)的位上的具体值。

那么我们不知道位的肯定是\(1\)和其他所有数字都不同的,也就是这些位上除了\(1\)其他数字都相同,那么我们直接拿另外两个数\(and/or\)一下再取这些位上的值就好了。

这样询问次数就是\(2n-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;
}

最新文章

  1. WebService的一些案例
  2. Coursera-Getting and Cleaning Data-week1-课程笔记
  3. ThinkPHP 3.2.3 数据缓存与静态缓存
  4. abs()函数的返回值问题
  5. findBugs学习小结
  6. 9.mybatis动态SQL标签的用法
  7. MongoDB 复制篇
  8. golang 在 windows 下编译出 linux 二进制可执行文件的软件套装合集 [go 1.7.3环境]
  9. KVM详情
  10. 【国庆】记一次mysqld_safe引发mysql进程故障
  11. Android转换集合数据(ArrayList)为Json格式并上传服务器
  12. SHELL脚本--数学运算和bc命令
  13. 解决Fiddler查看Post参数中文乱码的问题
  14. 微信公众号自定义菜单中添加emoji表情
  15. Java-Runoob-高级教程-实例-方法:14. Java 实例 – Varargs 可变参数使用
  16. 【ibatis】入门讲例
  17. BarTender条码检验位类型知识讲解
  18. Java的Collection.sort()方法
  19. python-组播
  20. SSH 暴力破解趋势——植入的恶意文件属 DDoS 类型的恶意文件最多,接近70%,包括 Ganiw、 Dofloo、Mirai、 Xarcen、 PNScan、 LuaBot、 Ddostf等家族。此外挂机、比特币等挖矿程序占5.21%

热门文章

  1. 两款轻量级服务器 Http-server &amp;&amp; SimpleHTTPServer
  2. mfc HackerTools监控键盘按键
  3. python turtle的使用
  4. vue-bluJavascript - Vue - 插件(swiper、vue-preview)
  5. 转:NGINX中的proxy_pass和rewrite
  6. JAVA虚拟机中的堆内存Heap与栈内存Stack
  7. 终于搞懂了PR曲线
  8. 八款优秀Linux浏览器推荐
  9. Mybatis笔记(2)
  10. 整理之BroadcaseReceiver