【随机化】【并查集】Gym - 100851J - Jump
题意:交互题,有一个长度为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的更多相关文章
- TTTTTTTTTTTTTTTTT Gym 100851J Jump 构造
题意:首先你输入一个数字n(偶数)(n<=1000),电脑则自动生成一个长度为n的01字符串,你每次可以构造出一个长度为n的01字符串,输入给电脑后电脑进行判定,如果你的字符串与电脑的字符串完全 ...
- Codeforces Gym 100463E Spies 并查集
Spies Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100463/attachments Desc ...
- Gym - 100625G Getting Through 计算几何+并查集
http://codeforces.com/gym/100625/attachments/download/3213/2013-benelux-algorithm-programming-contes ...
- Gym 100814C Connecting Graph 并查集+LCA
Description standard input/output Statements Alex is known to be very clever, but Walter does not be ...
- 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 ...
- GYM 101173 F.Free Figurines(贪心||并查集)
原题链接 题意:俄罗斯套娃,给出一个初始状态和终止状态,问至少需要多少步操作才能实现状态转化 贪心做法如果完全拆掉再重装,答案是p[i]和q[i]中不为0的值的个数.现在要求寻找最小步数,显然要减去一 ...
- Gym - 101243F Vitamins(思维+并查集)
题意 有三种药丸,白色W>红色R>蓝色B,给你m个约束条件,问你n个药丸的颜色,不能确定颜色输出‘?’ 题解 如果1<2<3,只要找到2就能确定1和3的颜色 如果2=4,只要确 ...
- Gym - 101550A Artwork (并查集在线做法)
题目链接 题意:给你一个n*m的网格图,初始时格点全白,每次可以将一段连续的格点涂黑.求出每次操作之后白色连通块的数量. 看了看网上的题解,基本全是离线的做法.其实这道题是有在线的做法的,利用了对偶图 ...
- 【枚举】【并查集】Gym - 101243F - Vitamins
题意:有n片药,有三种颜色,白色比红色重,红色比蓝色重,给你一些它们之间的重量关系,比如1>3,2=4之类,问你它们的颜色,如果没法判断的输出?. 先并查集把等于号全缩起来,然后按照大于号建图, ...
随机推荐
- laravel判断是否post传输
可以用post传输判断form表单是否有值post传过来: if($request->isMethod('post')){ // 要执行的代码 }通过 Request 对象的 isMethod ...
- 在Java中,你真的会日期转换吗
1.什么是SimpleDateFormat 在java doc对SimpleDateFormat的解释如下: SimpleDateFormat is a concrete class for form ...
- hihoCoder #1175 : 拓扑排序·二
题目链接:http://hihocoder.com/problemset/problem/1175 代码实现如下: #include <queue> #include <cstdio ...
- kali2.0安装虚拟机工具
kali2.0无法安装虚拟机工具,显示VMware Tools无法用于该虚拟机,或者安装之后无法进行复制.粘贴等操作. 解决办法: step1: 更换源 root@starnight:~# vim / ...
- React 16 源码瞎几把解读 【一】 从jsx到一个react 虚拟dom对象
一.jsx变createElement 每一个用jsx语法书写的react组件最后都会变成 react.createElement(...)这一坨东西, // 转变前 export default ( ...
- MySQL sleep过多解决方法
睡眠连接过多,会对mysql服务器造成什么影响? 严重消耗mysql服务器资源(主要是cpu, 内存),并可能导致mysql崩溃. 造成睡眠连接过多的原因? 1. 使用了太多持久连接(个人觉得,在高并 ...
- BZOJ - Problem 3622 - 已经没有什么好害怕的了
题意: 给定两个序列$a$和$b$,让它们进行匹配,求出使得$a_i > b_j$的个数比$a_i < b_j$的个数恰好多$k$,求这样的匹配方法数 题解: 这题的各种表示有一点相似又截 ...
- selenium grid结构图
调用 Selenium-Grid 的基本结构图如下: 上面是使用 selenium-grid 的一种普通方式,仅仅使用了其支持的分布式执行的功能,即当你同时需 要测试用例比较多时,可以平行的执行这些用 ...
- Oracle创建WM_CONCAT函数
Oracle创建WM_CONCAT函数 WM_CONCAT这个函数会出错,所以从 11g开始.官方不认可 WM_CONCAT.然后就没这个函数了, 下面就是创建WM_CONCAT这个函数的步骤 第一步 ...
- Jenkins+Ant+SVN+Jmeter实现持续集成
一.什么是持续集成? 待补充 二.说明: 本次框架介绍中不涉及到介绍框架的构建过程,介绍如何构建环境详细的构建见前篇文章: jmeter+Jenkins持续集成(邮件通知) Jmeter+Jenki ...