Codeforces Round #649 (Div. 2) E. X-OR 交互 二进制 随机 期望
LINK:X-OR
本来是应该昨天晚上发的 可是昨天晚上 做这道题 写了一个分治做法 一直wa
然后查错 查不出来 心态崩了 想写对拍 发现交互库自己写不出来。
一系列sb操作 == 我都醉了。
今天重构了代码 换了另外一种做法就很快就过了。
考虑怎么做:求出所有位置上的数字是谁 光凭异或是很难异或出来的。
或许可以快速察觉到一个做法 对于每一位来做 然后 找到第i为为0的是谁 这样就得到了一个nlogn的做法。
会爆掉询问次数。
发现如果逐一找到每个位置上是谁的话 更快需要找到0所在。
考虑如何找0 在已经有一个函数可以帮忙确定某一位是谁的情况下。
容易得到 随便找个数字开始或 然后 遇到刚好等于自己的 说明 对方是自己的子集 难么进行一次替换。
最终就会替换到0.
这样的过程是O(n)+log^2的 最后再来一次O(n)的扫描 就可以通过了。
可以利用map 来优化询问次数.一开始每一位的确定位置可以直接rand 期望下是很快的。
考虑分治做法:
考虑一种确定一个数字是谁的方法:O(n)暴力扫 然后得到的最小值就是自己的值当然0除外.
那么我们可以拿到一个值 然后 把自己的子集都给搞出来 不断重复这个过程 直至只剩下两个数字。
每次选取当前二进制下的一半 这样随机的效率较高。
期望下询问次数也不超过2n+c 所以可以通过 不过不知道为什么我写挂了...
这里是第一种做法:
const int MAXN=2050;
int n,m=11;
int p[MAXN];
int sum[MAXN],b[MAXN];
inline int ask(int i,int j)
{
cout<<"?"<<' '<<i<<' '<<j<<endl;
int x;cin>>x;return x;
}
inline int re(int x){return rand()%x+1;}
inline int gs(int x)
{
int ans=0;
vep(0,m,i)
{
int ww=0;
if(b[i]!=x)ww=ask(b[i],x);
if(ww&(1<<i))ans|=(1<<i);
}
return ans;
}
int main()
{
//freopen("1.in","r",stdin);
ios::sync_with_stdio(false);
srand(time(0));
cin>>n;
int cnt=0;
while(cnt<m)
{
int x=re(n);int y=re(n);
if(x==y)continue;
int ww=ask(x,y);
vep(0,m,i)if(!(ww&(1<<i))&&!b[i])
{
b[i]=x;++cnt;
}
}
cout<<"ww"<<endl;
int ww=gs(1),pos=1;
rep(2,n,i)
{
int x=ask(pos,i);
if(x<=ww)
{
pos=i;
ww=gs(i);
}
}
rep(1,n,i)if(pos!=i)p[i]=ask(pos,i);
cout<<"!";
rep(1,n,i)cout<<' '<<p[i];
return 0;
}
Codeforces Round #649 (Div. 2) E. X-OR 交互 二进制 随机 期望的更多相关文章
- Codeforces Round #649 (Div. 2)
Codeforces Round #649 (Div. 2) -- WKL \(\mathcal{A}\)题: \(\mathrm{XXXXX}\) Greedy implementation *12 ...
- Codeforces Round #649 (Div. 2) C. Ehab and Prefix MEXs
题目链接:https://codeforces.com/contest/1364/problem/C 题意 给出大小为 $n$ 的非递减数组 $a$,构造同样大小的数组 $b$,使得对于每个 $i$, ...
- Codeforces Round #649 (Div. 2) B. Most socially-distanced subsequence
题目链接:https://codeforces.com/contest/1364/problem/B 题意 给出大小为 $n$ 的一个排列 $p$,找出子序列 $s$,使得 $|s_1-s_2|+|s ...
- Codeforces Round #649 (Div. 2) A. XXXXX
题目链接:https://codeforces.com/contest/1364/problem/A 题意 找出大小为 $n$ 的数组 $a$ 的最长连续子数组,其元素和不被 $x$ 整除. 题解 如 ...
- Codeforces Round #649 (Div. 2) C、Ehab and Prefix MEXs D、Ehab's Last Corollary 找环和点染色
题目链接:C.Ehab and Prefix MEXs 题意; 有长度为n的数组a(下标从1开始),要求构造一个相同长度的数组b,使得b1,b2,....bi集合中没有出现过的最小的数是ai. mex ...
- Codeforces Round #649 (Div. 2) C. Ehab and Prefix MEXs (构造,贪心)
题意:有长度为\(n\)的数组\(a\),要求构造一个相同长度的数组\(b\),使得\({b_{1},b_{2},....b_{i}}\)集合中没有出现过的最小的数是\(a_{i}\). 题解:完全可 ...
- Codeforces Round #649 (Div. 2) B. Most socially-distanced subsequence (数学,差分)
题意:有一长度为\(n\)的数组,求一子序列,要求子序列中两两差的绝对值最大,并且子序列尽可能短. 题解:将数组看成坐标轴上的点,其实就是求每个单调区间的端点,用差分数组来判断单调性. 代码: #in ...
- Codeforces Round #649 (Div. 2) A. XXXXX (贪心)
题意:有一个长度为\(n\)的数组,找一段最长子数组,使得其元素和为\(x\),如果存在,输出子数组的长度,否则输出\(-1\). 题解:这题我们要从元素和\(sum\)来考虑,首先,如果原数组的所有 ...
- Codeforces Round #256 (Div. 2) D. Multiplication Table(二进制搜索)
转载请注明出处:viewmode=contents" target="_blank">http://blog.csdn.net/u012860063?viewmod ...
随机推荐
- 「疫期集训day3」要塞
战友们正讨论着他们曾经参加过凡尔登战役的父亲...在黎明前我们必须誓死坚守----法乌克斯要塞中弹尽粮绝的法军士兵 什么!今天又考状压和tarjan! 达成成就:连续两天复习数论和二分图 康乐康,这次 ...
- 确定比赛名次 UDU-1285 + 逃生 UDU 4857 拓扑排序(找不同)
确定比赛名次 题目大意 有N个比赛队(1<=N<=500),编号依次为1,2,3,....,N进行比赛,比赛结束后,裁判委员会要将所有参赛队伍从前往后依次排名,但现在裁判委员会不能直接获得 ...
- (一)学习了解OrchardCore笔记——开篇:基于asp.net core的OrchardCore
想深入了解OrchadCore源码许久了,但是读源码的时候遇到很多问题而网上的参考资料太少了(几乎都是OrchadCms不带OrchardCore的),现在解决得差不多了,做下笔记方便自己查看,有错误 ...
- 【Nginx】如何封禁IP和IP段?看完这篇我会了!!
写在前面 Nginx不仅仅只是一款反向代理和负载均衡服务器,它还能提供很多强大的功能,例如:限流.缓存.黑白名单和灰度发布等等.在之前的文章中,我们已经介绍了Nginx提供的这些功能.小伙伴们可以到[ ...
- Ubuntu18.04安装GitLab搭建私有仓库服务器过程笔记
百度了很多资料结果折腾很久还没安装成功,索性就直接上官网找文档参考顺利搭建完成 因为有2台服务器做练习,总结了2种安装方式提供参考:第一种官网安装方式,第二种国内镜像安装方式(建议采用第二种) 第 ...
- 【Redis学习专题】- Redis主从+哨兵集群部署
集群版本: redis-4.0.14 集群节点: 节点角色 IP redis-master 10.100.8.21 redis-slave1 10.100.8.22 redis-slave2 10.1 ...
- 【java面试】- 集合篇
Java 集合概览 从下图可以看出,在Java中除了以Map结尾的类之外, 其他类都实现了Collection接口.并且,以Map结尾的类都实现了Map接口 List.Set.Map三者的区别 Lis ...
- 05 . ELK Stack+Redis日志收集平台
环境清单 IP hostname 软件 配置要求 网络 备注 192.168.43.176 ES/数据存储 elasticsearch-7.2 内存2GB/硬盘40GB Nat,内网 192.168. ...
- Java代码片段
type 为Java中的任意数据类型,包括基本类型和组合类型,arrayName为数组名,必须是一个合法的标识符,[ ] 指明该变量是一个数组类型变量.例如: 这两种形式没有区别,使用效果完全一样,读 ...
- django-rest-framework-源码解析003-视图家族和路由(APIView/GenericAPIView/mixins/generics/viewsets)
视图家族 视图家族在rest_framework源码位置和学习曲线为: rest_framework.views: 基本视图(APIView) rest_framework.generics: 工具视 ...