题目:http://codeforces.com/contest/1064/problem/E

题意:给定n个点,要求每次自己给出一个点的坐标(整数点),这时系统会给出该点的颜色(黑或白),要求最后存在一条直线,能够将这些点分为黑白两部分,输出确定这条直线的两个坐标(整数点)。(数据范围:

思路:

一开始想的时,每次给出一个点的坐标,和前面所给定点的坐标和颜色进行分析,使得现在给出的该点无论是白色或者黑色都会存在着那么一条合理的直线(显然,这很难实现)

正确思路:
将这些点全部放在一条直线上,在前面的点颜色还一样的时候就不断往右边排,等到颜色不一样了,就在黑白两点之间不断取中心,限制条件判断一下即可(详可见图)

另一个需要注意的点是数据范围,在不断往右排的过程中,两点间距始终保持最后坐标显然会超,那么就每放一个坐标,间隔除以2即可,而,最后在两点之间划分割线的时候不用必须竖着划(即保证这两点间最小距离是2),可以斜着划(两点间距是1即可),恰好恰好也满足。

(代码和上图略有不同,思路是一样的)

#include <bits/stdc++.h>
//#pragma GCC optimize(3)
//#pragma GCC optimize("unroll-loops")
//#pragma comment(linker, "/stack:200000000")
//#pragma GCC optimize("Ofast,no-stack-protector")
//#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
#define fio ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
#define pb push_back
#define mkp(a,b) make_pair(a,b)
#define PII pair<int,int>
#define PLL pair<ll,ll>
#define fi first
#define se second
#define lc (d<<1) //d*2
#define rc (d<<1|1) //d*2+1
#define eps 1e-9
#define dbg(x) cerr << #x << " = " << x << "\n";
#define mst(a,val) memset(a,val,sizeof(a))
#define stn(a) setprecision(a)//小数总有效位数
#define stfl setiosflags(ios::fixed)//点后位数:cout<<stfl<<stn(a);
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const double PI=3.1415926535897932;
const int MAXN=1e5+10;
const ll mod=1e9+7;
ll inline mpow(ll a,ll b){ll ans=1;a%=mod;while(b){if(b&1)ans=(ans*a)%mod;a=(a*a)%mod,b>>=1;}return ans;}
int inline sgn(double x){return (x>-eps)-(x<eps);} //a<b:sgn(a-b)<0
priority_queue<int,vector<int>,greater<int> > qu; //up
priority_queue<int,vector<int>,less<int> > qd; //dn
const int inf = 0x3f3f3f3f; //9
const ll inff = 0x3f3f3f3f3f3f3f3f; //18int n;
char le[50],ri[50],s[50];
int lx,rx;
int pls=(1<<29);int main()
{fio;cin>>n;lx=rx=0;cout<<rx<<" "<<0<<endl;cin>>le;int i;int flag=0;for(i=1;i<n;i++){pls/=2;lx=rx;rx+=(pls);cout<<rx<<" "<<0<<endl;cin>>ri;if(le[0]!=ri[0]) {flag=1;break;}}for(++i;i<n;i++){cout<<(lx+rx)/2<<" "<<0<<endl;cin>>s;if(s[0]==le[0]) lx=(lx+rx)/2;else if(s[0]==ri[0]) rx=(lx+rx)/2;}if(flag) cout<<rx<<" "<<1<<" "<<rx+1<<" "<<3<<endl;else cout<<rx+1<<" "<<0<<" "<<rx+1<<" "<<1<<endl; //即全部为同色点的情况(包含只有一个点时的特殊情况)
}

codeforces 1064 E. Dwarves, Hats and Extrasensory Abilities (交互题,二分)相关推荐

  1. Codeforces ~ 1063C ~ Dwarves, Hats and Extrasensory Abilities (交互题,二分)

    题意 交互题.N次,让你每次输出一个点的坐标,然后他告诉你当前点的颜色(黑或白).使得可以找到一条直线把黑点和白点分隔开.最终输出这条直线过的两个点.输入输出均为正数,分为为0~1e9 思路 我们把所 ...

  2. 【codeforces】1063C Dwarves, Hats and Extrasensory Abilities【二分】

    1063C Dwarves, Hats and Extrasensory Abilities [题目描述] 传送门 [题解] 二分法放点就可以了,第一个点在(0,0),然后二分这个点(mid,mid) ...

  3. [Codeforces Round #516][Codeforces 1063C/1064E. Dwarves, Hats and Extrasensory Abilities]

    题目链接:1063C - Dwarves, Hats and Extrasensory Abilities/1064E - Dwarves, Hats and Extrasensory Abiliti ...

  4. 【交互题+二分】Codeforces Round #516 E. Dwarves, Hats and Extrasensory Abilities

    Codeforces Round #516 E. Dwarves, Hats and Extrasensory Abilities 题意: 输出一个点,输入是黑色或者白色,n次询问后,输出一条直线,是 ...

  5. CF1063C Dwarves, Hats and Extrasensory Abilities

    CF1063C Dwarves, Hats and Extrasensory Abilities 题意: 首先题目会给出 n ,表示要输入多少点. 然后你输出n 个点的坐标,每输出一个点会告诉你这个点 ...

  6. codeforces1064E Dwarves, Hats and Extrasensory Abilities

    目录 codeforces1064E Dwarves, Hats and Extrasensory Abilities 题意: 题解: Code: codeforces1064E Dwarves, H ...

  7. Codeforces Round #516 E. Dwarves, Hats and Extrasensory Abilities

    原题链接:https://codeforces.com/contest/1064/problem/E 题意: 交互题. 给你一个n,让你每次输出一个点,系统会告诉你这个点是黑还是白,让你观察完n个点之 ...

  8. Codeforces #1063C Dwarves, Hats and Extrasensory Abilities

    题目大意 交互题. 输出平面上的一个点的坐标,交互程序给这个点染色(白或黑). 如此重复 $n$ 次($ 1\le n \le 30$). 要求输出的 $n$ 个点各不相同,并且不论交互程序怎样给它们 ...

  9. codeforces C - Dwarves, Hats and Extrasensory Abilities

    这个交互式的题目非常巧妙 你给出一个点,他给你一种颜色,无论他给你什么颜色,你都可以找出一条线,能够把不同颜色的点分开 思路 如果两个点 颜色一样,那么第三个点必然不在两个点的中间,如果两个点颜色不一 ...

最新文章

  1. 冠军揭晓!京东Alpha开发者大赛Pick谁上了C位
  2. 渐进式Web应用程序的深入概述
  3. ETL的四个基本过程.
  4. pac (PAC(Proxy Auto Config) 是一个 Script;经由编写这个 Script,我们可以让系统判断在怎么样的情形下,要利用哪一台 Proxy 来进行联机。)...
  5. Spring事务“套路”面试
  6. 作者:胡晓惠(1960-),男,中国科学院软件研究所研究员,天基综合信息技术实验室常务副主任...
  7. android 广告设置秒数,Android动态显示具体到秒的相聚时间
  8. 微软 Small Basic
  9. 编写更加稳定、可读性强的JavaScript代码
  10. [LeetCode][easy]Roman to Integer
  11. matlab求两向量夹角_10373 高中立体几何向量法全攻略
  12. Premiere导入视频之后音频轨没有内容
  13. ios支付宝客户端集成流程
  14. Hadoop-统计红楼梦里出现名字的次数(MapReduce学习)
  15. 测试工作流程图,你一定要知道的
  16. 外贸供应链ERP怎么选?全流程综合管理解析
  17. 养老轻资产创业的商业逻辑与投资机会
  18. 普莱菲尔密码矩阵生成算法
  19. PTA 7-85 根据输入的空气污染指数,输出相应的信息。
  20. Gingko Framework:避免数据缓存

热门文章

  1. 【NOIP模拟】天使的分裂
  2. @Transient 实体类临时变量
  3. problem 1278
  4. 40页PPT详解金融业智能反欺诈的应用
  5. 天猫精灵打开电脑 语音控制电脑
  6. linux7.5开放端口,Centos/linux开放端口
  7. 亚马逊Amazon 753和754详解
  8. Latex 编译报错: Misplaced omit.
  9. java 比较当前时间_java时间比较
  10. java 编译期常量