正题

题目链接: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

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<algorithm>
  4. using namespace std;
  5. const int N=1e4+10;
  6. int n,k,a[N],p[N];
  7. int main()
  8. {
  9. scanf("%d%d",&n,&k);
  10. int MS=(1<<30)-1,ans=0,bns=0;
  11. for(int i=2,x,y;i<=n;i++){
  12. printf("and 1 %d\n",i);
  13. fflush(stdout);
  14. scanf("%d",&x);
  15. printf("or 1 %d\n",i);
  16. fflush(stdout);
  17. scanf("%d",&y);y^=MS;
  18. p[i]=(MS^(x|y));
  19. ans|=x;bns|=y;
  20. }
  21. int c=MS^(ans|bns),cns;
  22. printf("and 2 3\n");
  23. fflush(stdout);
  24. scanf("%d",&cns);cns&=c;
  25. a[1]=(c^cns)|ans;
  26. for(int i=2;i<=n;i++)a[i]=a[1]^p[i];
  27. sort(a+1,a+1+n);
  28. printf("finish %d\n",a[k]);
  29. fflush(stdout);
  30. return 0;
  31. }

CF1556D-Take a Guess【交互】的更多相关文章

  1. Sublime Text3配置在可交互环境下运行python快捷键

    安装插件 在Sublime Text3下面写代码感觉很不错,但是写Python的时候遇到了一些问题. 用Sublime Text3打开python文件,或者在Sublime Text3下写好pytho ...

  2. JS与APP原生控件交互

    "热更新"."热部署"相信对于混合式开发的童鞋一定不陌生,那么APP怎么避免每次升级都要在APP应用商店发布呢?这里就用到了混合式开发的概念,对于电商网站尤其显 ...

  3. Android混合开发之WebViewJavascriptBridge实现JS与java安全交互

    前言: 为了加快开发效率,目前公司一些功能使用H5开发,这里难免会用到Js与Java函数互相调用的问题,这个Android是提供了原生支持的,不过存在安全隐患,今天我们来学习一种安全方式来满足Js与j ...

  4. Android混合开发之WebView与Javascript交互

    前言: 最近公司的App为了加快开发效率选择了一部分功能采用H5开发,从目前市面的大部分App来讲,大致分成Native App.Web App.Hybrid App三种方式,个人觉得目前以Hybri ...

  5. EventBus实现activity跟fragment交互数据

    最近老是听到技术群里面有人提出需求,activity跟fragment交互数据,或者从一个activity跳转到另外一个activity的fragment,所以我给大家介绍一个开源项目,EventBu ...

  6. QT5利用chromium内核与HTML页面交互

    在QT5.4之前,做QT开发浏览器只能选择QWebkit,但是有过使用的都会发现,这个webkit不是出奇的慢,简直是慢的令人发指,Release模式下还行,debug下你就无语了,但是webkit毕 ...

  7. PHP-----文件系统的交互

    本文讲解php中于文件交互中所使用的函数 代码示例 <html> <head> <title> File Detail </title> </he ...

  8. 【定有惊喜】android程序员如何做自己的API接口?php与android的良好交互(附环境搭建),让前端数据动起来~

    一.写在前面 web开发有前端和后端之分,其实android还是有前端和后端之分.android开发就相当于手机app的前端,一般都是php+android或者jsp+android开发.androi ...

  9. Android中Fragment与Activity之间的交互(两种实现方式)

    (未给Fragment的布局设置BackGound) 之前关于Android中Fragment的概念以及创建方式,我专门写了一篇博文<Android中Fragment的两种创建方式>,就如 ...

  10. 工大助手(C#与python交互)

    工大助手(爬虫--C#与python交互) 基本内容 工大助手(桌面版) 实现登陆.查成绩.计算加权平均分等功能 团队人员 13070046 孙宇辰 13070003 张帆 13070004 崔巍 1 ...

随机推荐

  1. Vmware下安装Ubuntu18.04详情

    转载地址:https://blog.csdn.net/qq_35623773/article/details/89893853

  2. 转载自-阮一峰-测试框架 Mocha 实例教程

    测试框架 Mocha 实例教程   作者: 阮一峰 日期: 2015年12月 3日 Mocha(发音"摩卡")诞生于2011年,是现在最流行的JavaScript测试框架之一,在浏 ...

  3. VMware上安装的Ubuntu不显示全屏解决方法

    花费了好一会才把电脑上的Vmware装上,把Ubuntu装到虚拟机上,谁知道Ubuntu不显示全屏,我调了分辨率,奈何Ubuntu里面固定的分辨率没有跟我电脑匹配的,然后开始寻找解决方法,在网上找了很 ...

  4. [转]C# 互操作性入门系列(三):平台调用中的数据封送处理

    参考网址:https://www.cnblogs.com/FongLuo/p/4512738.html C#互操作系列文章: C# 互操作性入门系列(一):C#中互操作性介绍 C# 互操作性入门系列( ...

  5. Oracle数据库 —— DML完结

    时间:2016-8-18 01:17 ----------------------------------------------------------------------------停下休息的 ...

  6. 痞子衡嵌入式:简析i.MXRT1170 XECC功能特点及其保护串行NOR Flash和SDRAM之道

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是i.MXRT1170 XECC功能特点及其保护串行NOR Flash和SDRAM之道. ECC 是 "Error Correc ...

  7. java js转码解码

    摘自网友:https://blog.csdn.net/sgear/article/details/1509400?utm_medium=distribute.pc_relevant.none-task ...

  8. [leetcode]1109. 航班预订统计(击败100%用户算法-差分数组的详解)

    执行用时2ms,击败100%用户 内存消耗52.1MB,击败91%用户 这也是我第一次用差分数组,之前从来没有碰到过,利用差分数组就是利用了差分数组在某一区间内同时加减情况,只会改变最左边和最右边+1 ...

  9. 测试Kaggle kernel commit 是否会删除以前的output

    在kaggle上创建kernel,加入如下代码. 连续运行两次,可以看到保存的文件名字不一样,且无论运行错少次,都只有一个输出文件. 这说明,kaggle上的kernel每次commit运行,都会清空 ...

  10. Spring系列之JDBC对不同数据库异常如何抽象的?

    前言 使用Spring-Jdbc的情况下,在有些场景中,我们需要根据数据库报的异常类型的不同,来编写我们的业务代码.比如说,我们有这样一段逻辑,如果我们新插入的记录,存在唯一约束冲突,就会返回给客户端 ...