题意:交互题,有一个长度为n(偶数)的二进制串,你需要猜不超过n+500次猜到它。如果你猜的串与原串相同的位数为n,那么会返回n,如果为n/2,那么会返回n/2,否则都会返回零。

先random,直到出现一个n/2为止,将此串视为a串。由于正态分布,肯定能在500次内查到。

然后枚举a的所有相邻元素,将相邻的元素取反后进行询问,如果返回n/2,说明相邻的这两位有一个是对的,一个是错的;如果返回不是n/2,说明这两位要么都对,要么都错。

于是用2-sat的思想,将每个元素拆点,由于是双向边,所以直接用并查集维护,同一个并查集里的全是对的/或者全是错的,最后所有元素都在两个集合中。所以最后只剩两种可能的情况了,再分别询问 一下就行了。

//fflush(stdout);
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cstdlib>
using namespace std;
int fa[2005];
int find(int x){
return x==fa[x] ? x : fa[x]=find(fa[x]);
}
int n,x;
char a[2005];
int Map(int x){
if(x<=n){
return x+n;
}
else{
return x-n;
}
}
int main(){
srand(233);
scanf("%d",&n);
for(int i=1;i<=n*2;++i){
fa[i]=i;
}
while(1){
for(int i=1;i<=n;++i){
putchar(a[i]=((rand()&1) ? '1' : '0'));
}
puts("");
fflush(stdout);
scanf("%d",&x);
if(x==n){
return 0;
}
if(x==n/2){
break;
}
}
a[n+1]='\0';
for(int i=1;i<n;++i){
a[i]=((a[i]-'0')^1)+'0';
a[i+1]=((a[i+1]-'0')^1)+'0';
puts(a+1);
fflush(stdout);
scanf("%d",&x);
if(x==n){
return 0;
}
if(x==n/2){
int f1=find(i),f2=find(i+1+n);
if(f1!=f2){
fa[f1]=f2;
}
f1=find(i+1),f2=find(i+n);
if(f1!=f2){
fa[f1]=f2;
}
}
else{
int f1=find(i),f2=find(i+1);
if(f1!=f2){
fa[f1]=f2;
}
f1=find(i+n),f2=find(i+1+n);
if(f1!=f2){
fa[f1]=f2;
}
}
a[i]=((a[i]-'0')^1)+'0';
a[i+1]=((a[i+1]-'0')^1)+'0';
}
for(int i=1;i<=n;++i){
putchar(find(i)==find(1) ? a[i] : ((a[i]-'0')^1)+'0');
}
puts("");
fflush(stdout);
scanf("%d",&x);
if(x!=n){
for(int i=1;i<=n;++i){
putchar(find(i)==find(1+n) ? a[i] : ((a[i]-'0')^1)+'0');
}
puts("");
fflush(stdout);
}
return 0;
}

【随机化】【并查集】Gym - 100851J - Jump的更多相关文章

  1. TTTTTTTTTTTTTTTTT Gym 100851J Jump 构造

    题意:首先你输入一个数字n(偶数)(n<=1000),电脑则自动生成一个长度为n的01字符串,你每次可以构造出一个长度为n的01字符串,输入给电脑后电脑进行判定,如果你的字符串与电脑的字符串完全 ...

  2. Codeforces Gym 100463E Spies 并查集

    Spies Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100463/attachments Desc ...

  3. Gym - 100625G Getting Through 计算几何+并查集

    http://codeforces.com/gym/100625/attachments/download/3213/2013-benelux-algorithm-programming-contes ...

  4. Gym 100814C Connecting Graph 并查集+LCA

    Description standard input/output Statements Alex is known to be very clever, but Walter does not be ...

  5. Tree Restoration Gym - 101755F (并查集)

    There is a tree of n vertices. For each vertex a list of all its successors is known (not only direc ...

  6. GYM 101173 F.Free Figurines(贪心||并查集)

    原题链接 题意:俄罗斯套娃,给出一个初始状态和终止状态,问至少需要多少步操作才能实现状态转化 贪心做法如果完全拆掉再重装,答案是p[i]和q[i]中不为0的值的个数.现在要求寻找最小步数,显然要减去一 ...

  7. Gym - 101243F Vitamins(思维+并查集)

    题意 有三种药丸,白色W>红色R>蓝色B,给你m个约束条件,问你n个药丸的颜色,不能确定颜色输出‘?’ 题解 如果1<2<3,只要找到2就能确定1和3的颜色 如果2=4,只要确 ...

  8. Gym - 101550A Artwork (并查集在线做法)

    题目链接 题意:给你一个n*m的网格图,初始时格点全白,每次可以将一段连续的格点涂黑.求出每次操作之后白色连通块的数量. 看了看网上的题解,基本全是离线的做法.其实这道题是有在线的做法的,利用了对偶图 ...

  9. 【枚举】【并查集】Gym - 101243F - Vitamins

    题意:有n片药,有三种颜色,白色比红色重,红色比蓝色重,给你一些它们之间的重量关系,比如1>3,2=4之类,问你它们的颜色,如果没法判断的输出?. 先并查集把等于号全缩起来,然后按照大于号建图, ...

随机推荐

  1. 24、简述Python的深浅拷贝以及应用场景

    深浅拷贝的原理 深浅拷贝用法来自copy模块. 导入模块:import copy 浅拷贝:copy.copy 深拷贝:copy.deepcopy 字面理解:浅拷贝指仅仅拷贝数据集合的第一层数据,深拷贝 ...

  2. hdu 5328 Problem Killer(杭电多校赛第四场)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5328 题目大意:找到连续的最长的等差数列or等比数列. 解题思路:1.等差等比的性质有很多.其中比较重 ...

  3. 网易android开发面试题及心得

    前几天面试网易android开发,总体感觉问题难度一般.怪我自己没有好好梳理知识,尤其是基础,后面就没消息了... 笔试: 1.描述Activity 生命周期 2.什么是ANR,如何规避? 3.描述a ...

  4. numpy 简介

    .caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px so ...

  5. awk正则匹配nginx日志【原创】

    查看网页访问代码不为200和30x所有行的内容 awk '{if($9!~/200|30*/) print $0}' /app/logs/http_access.log 或 awk '$9!~/200 ...

  6. caffe Python API 之Accuracy

    net.acc = caffe.layers.Accuracy(net.fc3,net.label) 输出: layer { name: "acc" type: "Acc ...

  7. git版本控制系统常见操作总结

    简介 Git是强大的版本控制系统,主要功能是针对代码.配置文件等文本进行版本控制.备份等,同时个人认为还是分发代码的一个不错的方式. 常见用法 #创建远程git仓库 [root@test88 ~]# ...

  8. HDFS RAID实现方案(转)

    原文链接:http://blog.chinaunix.net/uid-20196318-id-3213700.html 分布式文件系统主要用于解决海量数据存储的问题,如Goolge.Facebook等 ...

  9. ELK简单使用

    原作者:http://www.cnblogs.com/snidget/p/6269383.html ELK ELK是什么? Elasticsearch LogStash Kibana     1,简单 ...

  10. Webcollector应用(二)

    先吐槽一句哀家的人品,总在写好代码之后,网站默默的升级,没有一点点防备... 一.加代理 爬取一个网站的时候,爬了不到一半,IP被封了,整个内部局域网的所有电脑都不能访问网站了. public cla ...