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 ...
随机推荐
- git flow版本
feature 分支:开发者进行功能开发的分支. develop 分支:对开发的功能进行集成的分支. release 分支:负责版本发布的分支. hotfix 分支:对线上缺陷进行修复工作的分支,热修 ...
- 十九:JDBC操作事务
二.MySQL数据库中操作事务命令 2.1.开启事务(start transaction) 使用"start transaction"开启MySQL数据库的事务,如下所示:
- LeetCoded第206题题解--反转链表
反转一个单链表. 示例 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 方法一:递归 自始至 ...
- Spark Ignite踩坑记录
Ignite spark 踩坑记录 简述 ignite访问数据有两种模式: Thin Jdbc模式: Jdbc 模式和Ignite client模式: shell客户端输出问题,不能输出全列: 针对上 ...
- MySQL高可用主从复制部署
原文转自:https://www.cnblogs.com/itzgr/p/10233932.html作者:木二 目录 一 基础环境 二 实际部署 2.1 安装MySQL 2.2 初始化MySQL 2. ...
- Hopper Disassembler系列之Sublime Text 3 爆破
https://www.52pojie.cn/thread-793069-1-1.html 当参数少于7个时, 参数从左到右放入寄存器: rdi, rsi, rdx, rcx, r8, r9. 当参数 ...
- xxs攻击
1 XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中.比如这些代码包括HTML代码和客户端脚本.攻击者利用XSS漏洞旁路掉访问控制--例如 ...
- 一个简单的URL访问权限校验
前言 目前最流行的两大安全框架:SpringSecruity.Shiro 权限控制,无非就是:前端控件是否可见.是否允许请求/访问URL 本文分享一个简单的URL访问权限校验,支持/./*./**等情 ...
- python使用UTF-8写入CSV中文乱码
使用encoding='utf-8',写入的文档是乱码. 解决办法: 修改encoding='utf-8-sig' 关于文件open()函数: open(path,'-模式-',encoding='u ...
- PPPoE技术白皮书(H3C)
PPPoE技术白皮书 关键词:PPP,Ethernet,PPPoE 摘要:PPPoE是一种通过一个远端接入设备为以太网上的主机提供接入服务,并可以对接入的每个主机实现控制和计费的技术.本文介绍了PPP ...