题目链接

\(Description\)

  有一个长为\(n\)的序列,其中有两个元素为\(y\),其余全为\(x\)。你可以进行\(19\)次询问,每次询问你给出一个下标集合,交互库会返回这些元素的异或和。给定\(n,x,y\),你需要求出两个\(y\)的下标。

  \(n\leq 1000,1\leq x,y\leq 10^9\)。

\(Solution\)

  对连续区间询问得到的结果只有那么几种,可以直接判断\(y\)的个数的奇偶性。但是区分不出来该区间有0个还是2个\(y\)。

  两个\(y\)的下标不同。我们可以借此对下标某一位是\(0/1\)计算其异或和,若不同,则两个\(y\)的下标在这一位上不同。最后我们能得到两个\(y\)下标的异或和。

  找一个\(y\)在某位不同且元素个数最少的位置,在较小的集合内(大小\(\leq\frac{n}{2}\))二分,这里面只有一个\(y\),就可以得到它的位置,异或之前的和就得到另一个。次数正好\(19\)。

  当然也可以不二分。任找该位不同的一位\(p\),然后枚举不等于\(p\)的每位,我们要判断是否有一个\(y\)(另一个可以直接通过之前在该位的询问得到)在该位上是\(1\)。只枚举\(p,i\)位为1的下标,可以保证只有一个\(y\)并判断出这个\(y\)是否在这位上是\(1\),因为询问可以确定其中是否有\(y\)。

#include <cstdio>
#include <cctype>
#include <algorithm>
#define gc() getchar()
const int N=1005; int n,x,y;
bool vis[N]; inline int read()
{
int now=0;register char c=gc();
for(;!isdigit(c);c=gc());
for(;isdigit(c);now=now*10+c-'0',c=gc());
return now;
}
inline bool Query()
{
int t=0, res;
for(int i=1; i<=n; ++i) if(vis[i]) ++t;
if(!t) return 0;
printf("? %d",t);
for(int i=1; i<=n; ++i) if(vis[i]) printf(" %d",i);
putchar('\n'); fflush(stdout);
return res=read(),(t&1&&!(res^y))||(!(t&1)&&res^y==x);//想错好多次。。
} int main()
{
n=read(), x=read(), y=read();
int sum=0, p=0;
for(int i=0; 1<<i<=n; ++i)
{
for(int j=1; j<=n; ++j) if(j>>i&1) vis[j]=1;
if(Query()) sum|=1<<i, p=i;
for(int j=1; j<=n; ++j) vis[j]=0;
}
int p1=0, p2=1<<p;
for(int i=0; 1<<i<=n; ++i)
if(i!=p)
{
for(int j=1; j<=n; ++j) if(j>>i&1 && j>>p&1) vis[j]=1;
p2|=Query()<<i;
for(int j=1; j<=n; ++j) vis[j]=0;
}
if((p1=p2^sum)>p2) std::swap(p1,p2);
printf("! %d %d\n",p1,p2); fflush(stdout); return 0;
}

Codeforces.835E.The penguin's game(交互 按位统计 二分)的更多相关文章

  1. Codeforces 835E. The penguin's game

    http://codeforces.com/problemset/problem/835/E 题意: 这是一道交互题 有n个数,其中有2个y,n-2个x 每次你可以询问若干个数的异或和,从而得出y的位 ...

  2. Codeforces.744B.Hongcow's Game(交互 按位统计)

    题目链接 \(Description\) 一个\(n\times n\)的非负整数矩阵\(A\),保证\(A_{i,i}=0\).现在你要对每个\(i\)求\(\min_{j\neq i}A_{i,j ...

  3. codeforces 679A Bear and Prime 100 交互

    第一次交互题,记录一下吧 #include <cstdio> #include <iostream> #include <ctime> #include <v ...

  4. Codeforces 897D. Ithea Plays With Chtholly (交互)

    题目链接:D. Ithea Plays With Chtholly 题意: 给你n张纸,在纸上写字(在 1 - c之间)可以写m次数 (,).(主要是交互,让你判断) 题解: 首先,看到m>=n ...

  5. Vladik and Favorite Game CodeForces - 811D (思维+BFS+模拟+交互题)

    D. Vladik and Favorite Game time limit per test 2 seconds memory limit per test 256 megabytes input ...

  6. Codeforces 862D. Mahmoud and Ehab and the binary string 【二分】(交互)

    <题目链接> 题目大意: 有一个长度为n(n<1000)的01串,该串中至少有一个0和一个1,现在由你构造出一些01串,进行询问,然后系统会给出你构造的串与原串的   Hamming ...

  7. Codeforces.810D.Glad to see you!(交互 二分)

    题目链接 \(Description\) 有一个大小为\(k\)的集合\(S\),元素两两不同且在\([1,n]\)内.你可以询问不超过\(60\)次,每次询问你给出\(x,y\),交互库会返回\(\ ...

  8. Codeforces - 1117E - Crisp String - 进制 - 交互

    https://codeforces.com/problemset/problem/1117/E 就用abc表示数字来给每个数编码,编完直接问出移动的结果,反构造就行了,比C和D还简单. #inclu ...

  9. Codeforces 1368F - Lamps on a Circle (交互博弈)

    这题也太新颖了吧.. 交互博弈 以前一直以为交互只能出二分 题意:长度为n的环形灯 玩家有两种操作 结束游戏 或者选择k个灯点亮 每次这个k是玩家自己选的 玩家操作后让电脑操作 电脑选择一个最优的点x ...

随机推荐

  1. [Spring] 学习Spring Boot之二:整合MyBatis并使用@Trasactional管理事务

    一.配置及准备工作 1.在 Maven 的 pom 文件中新增以下依赖: <dependency> <groupId>mysql</groupId> <art ...

  2. JXL读取,写入Excel

    JXL读取,写入Excel2003 相关阅读:poi 读写excel2003:http://www.cnblogs.com/gavinYang/p/3576739.htmlpoi 读写excel200 ...

  3. (64位)本体学习程序(ontoEnrich)系统使用说明文档

    系统运行:文件夹system下,可执行文件ontoEnrichment 概念学习 --------------------------------------------------------1.简 ...

  4. sh脚本学习之: 命令处理

    输出 默认是命令行输出 > 替换输出 >> append输出 2>  错误输出 < 由文件输入 <<eof 控制台输入,eof为输入结束标志 /dev/nul ...

  5. [转载]必须Mark!最佳HTML5应用开发工具推荐

    http://www.csdn.net/article/2014-04-25/2819503-10-html5-tools-worth-checking-out/2 摘要:HTML5自诞生以来,作为新 ...

  6. [BZOJ 4350]括号序列再战猪猪侠 题解(区间DP)

    [BZOJ 4350]括号序列再战猪猪侠 Description 括号序列与猪猪侠又大战了起来. 众所周知,括号序列是一个只有(和)组成的序列,我们称一个括号 序列S合法,当且仅当: 1.( )是一个 ...

  7. vue实践中的狗血事件之:mock数据引发的血坑

    在项目实践中,遇到了这么一档子事 开发环境下,很快乐,什么事儿都没有,于是想打包一下测一下自动登录的效果 好家伙,一开始登录没有效,改来改去,最后连路由都切换不了, 明明开发环境下好好的,为毛打包后就 ...

  8. TensorFlow 从零到helloWorld

    目录 1.git安装与使用 1.1 git安装 1.2 修改git bash默认路径 1.3 git常用操作 2.环境搭建   2.1 tensorflow安装   2.2 CUDA安装   2.3 ...

  9. ubuntu16.04 caffe(GPU模式)安装

    历时5天终于完成了,配置中出现了各种各样的Error,这里记录一下,希望能为正在安装的人提供一点帮助. 配置中主要参考博客:http://blog.csdn.net/yhaolpz/article/d ...

  10. Deep learnin简介

    从今天开始,准备入DL的大坑,希望自己能坚持下来. 网上有不少介绍: 深度学习的历             史:http://www.goldencui.org/2014/12/02/%E7%AE%8 ...