Codeforces Round #503 (by SIS, Div. 1)D. the hat
原题链接:B. The hat
题意:有n(偶数)个人围成一个圈,每个人身上有一个数字,保证相邻两个人的数字差为1,
现在要把第i个人和第i+n/2个人面对面站着,例如现在有8个人,站好后如下:
1 2 1 2
3 4 3 2
第1个人和第5个人面对面,第2个人和第6个人面对面,以此类推。。。
现在的问题是你可以询问q(q<=60)次,在n(2<=n<=100000)个人中
找出一对面对面站着且数字相同的人,输出这两个人任意一个人的位置,没找到输出-1;
首先当n%4!=0的时候我们直接输出-1即可,为什么可以这样?
我们可以先看一组数据:
1 2 3
2 1 2
第一个人为奇数,那么因为保证相邻两个人的数字差为1,所以第二个人肯定为偶数。。。第一排最后一个为奇数
下面一排的第一个人跟第一排的最后一个人数字差为1,所以他肯定为偶数,于是上面一排跟下面一排奇偶性刚好错开
所以上面的数不可能等于下面的数,证完了,是不是很简单?
OK,接下来我们考虑一般情况,一共最多有50000对数,我们只可以询问
最多60次,如果从前往后直接询问肯定不行,有经验的选手容易想到二分查找,
没错,这道题还真就是二分查找,怎么查找呢,我们先看一组数据:
7 6 5 4 5 6 5 4 3 2
1 2 3 4 3 2 3 4 5 6
设上面一排为A,第i个数为Ai,下面一排为B,第i个数为Bi
A1>B1,A只有往后减少,B往后增加中间才能出现相等的情况,并且由于最后An要和B1要相差1,Bn和A1也要相差1
所以肯定是有解的。先查第一对,A1=7,B1=1,得出上下排大小关系然后在第二对和最后一对中间进行二分查找,具体实现见代码:
#include <bits/stdc++.h> using namespace std; int n,x,y,a,b; int main(){cin>>n;if(n%4!=0){printf("! -1\n");return 0;}printf("? 1\n");cin>>x;printf("? %d\n",1+n/2);cin>>y;if(x==y){printf("! %d\n",x);return 0;}int l=2,r=n/2;while(l<=r){int m=(l+r)/2;printf("? %d\n",m);cin>>a;printf("? %d\n",m+n/2);cin>>b;if(a==b){printf("! %d\n",m);return 0;}else if(x>y&&a>b||x<y&&a<b)l=m+1;else r=m;} }
转载于:https://www.cnblogs.com/ccsu-kid/p/9476920.html
Codeforces Round #503 (by SIS, Div. 1)D. the hat相关推荐
- Codeforces Round #503 (by SIS, Div. 2) D. The hat(交互题)
题目链接:http://codeforces.com/contest/1020/problem/D 题意描述: 这是一个交互题,互交题就是你要输出一些问题,评测机就会回答你一些问题 你要在规定的提问次 ...
- Codeforces Round #503 (by SIS, Div. 2) C. Elections
气死我了人生中第一次打cf就掉分了 A题大水题浪费太多时间囧明明都是A两题亮老师还上分了.. 表示C题打的时候就想到正解啊(而且还更加优秀,因为家里老爷机暴力跑的超龟以为不行 其实是没认真算复杂度), ...
- Educational Codeforces Round 114 (Rated for Div. 2) (A ~ F)全题解
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Educational Codeforces Round 114 (Rated for Div. 2) ...
- Educational Codeforces Round 106 (Rated for Div. 2)(A ~ E)题解(每日训练 Day.16 )
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 Educational Codeforces Round 106 (Rated for Div. ...
- Educational Codeforces Round 37 (Rated for Div. 2) 1
Educational Codeforces Round 37 (Rated for Div. 2) A.Water The Garden 题意:Max想给花园浇水.花园可被视为长度为n的花园床,花园 ...
- Educational Codeforces Round 90 (Rated for Div. 2)(A, B, C, D, E)
Educational Codeforces Round 90 (Rated for Div. 2) Donut Shops 思路 分三种情况: a==c/ba == c / ba==c/b这个时候两 ...
- Educational Codeforces Round 89 (Rated for Div. 2)(A, B, C, D)
Educational Codeforces Round 89 (Rated for Div. 2) A. Shovels and Swords 思路 题意非常简单,就是得到最多的物品嘛,我们假定a, ...
- Educational Codeforces Round 114 (Rated for Div. 2) D. The Strongest Build 暴力 + bfs
传送门 文章目录 题意: 思路: 题意: 你有nnn个装备槽,每个槽里面有cic_ici个力量加成,对于每个槽只能选一个力量加成,现在给你mmm个力量组合[b1,b2,...,bn][b_1,b_2 ...
- Educational Codeforces Round 72 (Rated for Div. 2) D. Coloring Edges dfs树/拓扑找环
传送门 文章目录 题意: 思路: 题意: 给你一张图,你需要给这个图的边染色,保证如果有环那么这个环内边的颜色不全相同,输出染色方案和用的颜色个数. n,m≤5e3n,m\le5e3n,m≤5e3 思 ...
最新文章
- SORT,DELETE ADJACEN DUPLICATES FROM保留有效数据
- “冷潮”之后,P2P或更加适合投资
- android 自定义view如何控制view的高度_Android自定义View属性动画
- springboot进行图片上传并访问资源
- VTK:绘图之BarChart
- andorid 第五天 了解xml与应用程序之间的关系
- mysql mariadb并存_MariaDB与MySQL并存
- USB共享网络:android手机通过USB与Ubuntu进行socket网络通信
- React之初始化state
- python贪吃蛇毕业设计_【干货|python项目实例——贪吃蛇】- 环球网校
- 理解CapsuleNetwork2
- python判断网页密码加密方式_Python模拟网页中javascript加密与验证的相关处理
- SpringCloud微服务权限控制(一)概述
- IndexedDB封装
- stc15w404as引脚图_STC15W408AS系列
- 龙世界java下载_龙世界3-龙王之剑
- spider分布式引擎
- 增量式编码器 绝对值编码器
- 【STM32F407的DSP教程】第22章 DSP矩阵运算-放缩,乘法和转置矩阵
- Apple Mac OS 0.97太酷了。。。呵呵,顺便分享某版本Mac源码