CF1556D-Take a Guess【交互】
正题
题目链接:https://codeforces.com/contest/1556/problem/D
题目大意
现在有\(n\)个你不知道的数字,你有两种询问操作
- 询问两个下标的数字的\(and\)
- 询问两个下标的数字的\(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;
}
CF1556D-Take a Guess【交互】的更多相关文章
- Sublime Text3配置在可交互环境下运行python快捷键
安装插件 在Sublime Text3下面写代码感觉很不错,但是写Python的时候遇到了一些问题. 用Sublime Text3打开python文件,或者在Sublime Text3下写好pytho ...
- JS与APP原生控件交互
"热更新"."热部署"相信对于混合式开发的童鞋一定不陌生,那么APP怎么避免每次升级都要在APP应用商店发布呢?这里就用到了混合式开发的概念,对于电商网站尤其显 ...
- Android混合开发之WebViewJavascriptBridge实现JS与java安全交互
前言: 为了加快开发效率,目前公司一些功能使用H5开发,这里难免会用到Js与Java函数互相调用的问题,这个Android是提供了原生支持的,不过存在安全隐患,今天我们来学习一种安全方式来满足Js与j ...
- Android混合开发之WebView与Javascript交互
前言: 最近公司的App为了加快开发效率选择了一部分功能采用H5开发,从目前市面的大部分App来讲,大致分成Native App.Web App.Hybrid App三种方式,个人觉得目前以Hybri ...
- EventBus实现activity跟fragment交互数据
最近老是听到技术群里面有人提出需求,activity跟fragment交互数据,或者从一个activity跳转到另外一个activity的fragment,所以我给大家介绍一个开源项目,EventBu ...
- QT5利用chromium内核与HTML页面交互
在QT5.4之前,做QT开发浏览器只能选择QWebkit,但是有过使用的都会发现,这个webkit不是出奇的慢,简直是慢的令人发指,Release模式下还行,debug下你就无语了,但是webkit毕 ...
- PHP-----文件系统的交互
本文讲解php中于文件交互中所使用的函数 代码示例 <html> <head> <title> File Detail </title> </he ...
- 【定有惊喜】android程序员如何做自己的API接口?php与android的良好交互(附环境搭建),让前端数据动起来~
一.写在前面 web开发有前端和后端之分,其实android还是有前端和后端之分.android开发就相当于手机app的前端,一般都是php+android或者jsp+android开发.androi ...
- Android中Fragment与Activity之间的交互(两种实现方式)
(未给Fragment的布局设置BackGound) 之前关于Android中Fragment的概念以及创建方式,我专门写了一篇博文<Android中Fragment的两种创建方式>,就如 ...
- 工大助手(C#与python交互)
工大助手(爬虫--C#与python交互) 基本内容 工大助手(桌面版) 实现登陆.查成绩.计算加权平均分等功能 团队人员 13070046 孙宇辰 13070003 张帆 13070004 崔巍 1 ...
随机推荐
- SpringBoot快速入门(一)
本文内容 SpringBoot概述 SpringBoot快速入门 SpringBoot起步依赖原理分析 SpringBoot配置 SpringBoot整合其他框架 1.SpringBoot概述 1.1 ...
- 将数组对象相同key的内容合并
function fireDuplicate (arr) { var arr = JSON.parse(JSON.stringify(arr)) var ids = [] arr.forEach(fu ...
- Spring中Resource(资源)的获取
1.通过Resource接口获取资源 Resource接口的实现类有: Resource接口继承了InputStreamSource 接口,InputStreamSource 接口中有一个方法:get ...
- vmware 配置不同网段双网卡。
一.前言 需求:由于LVS演练需要,需要配置两张linux OS网卡,而且是不同网段. 准备: 物理机:单网卡 VMware:centos 6.8 二.配置 第一步:新建虚拟机VMware,cento ...
- flex布局中flex属性运用在随机发红包的算法上
flex布局是现在前端基本上都会运用的一种布局,基本上用到比较多的是父元素设置display:flex,两个子元素,一个设置固定宽度,另一个设置为flex:1(这里都指flex-direction为r ...
- docker镜像与容器的导出导入
导入导出涉及的命令有save.load.export.import # 1) docker save 导出镜像到文件 docker save -o nginx.tar nginx:latest # 2 ...
- Nginx:多项目开发配置跨域代理
简述Nginx应用场景(前后端) 当我们开发 vue 项目中可以通过 proxyTable 进行跨域,但如果是原生的 html+css+js ,或者其他没有跨域插件的项目中,想要跨域就要引入配置许多的 ...
- JAVA安全基础之代理模式(一)
JAVA安全基础之代理模式(一) 代理模式是java的一种很常用的设计模式,理解代理模式,在我们进行java代码审计时候是非常有帮助的. 静态代理 代理,或者称为 Proxy ,简单理解就是事情我不用 ...
- [第三篇]——CentOS Docker 安装之Spring Cloud直播商城 b2b2c电子商务技术总结
CentOS Docker 安装 Docker 支持以下的 64 位 CentOS 版本: CentOS 7 CentOS 8 更高版本... 使用官方安装脚本自动安装 安装命令如下: curl -f ...
- String与基本类型,字符数组,字节数组的转换
String与基本数据类型 * 基本数据 --->字符串(String) * 1.基本数据类型值 +"" --->最简单 * 2.使用包装类中的toString(参数类 ...