题意:

给出 n ,接下来n次交互。每次你输出一个点的二维坐标,然后系统返回 black 或者 white ,表示这个点是白色点还是黑色点。

全部结束之后,你需要输出一条直线将上述的所有白色点和黑色点分开在两边。

思路:

这是一个用二分来写的交互题。

交互题与普通题唯一的区别就是,每次输出之后,记得清空缓存区,即fflush(stdout);

首先给出一个初始点,(5,0) 作为初始点,如果它第一个点是黑点,则标记左边的所有点为黑,如果为白,则标记左边的所有点 为白。

然后直到题目给出一个不一样颜色的点之后,将剩下所有的点放到 y = 10 这一行上,现在为了说明,来进行一个模拟。

假如左边为黑,右边为白,且现在已经到了 y = 10 这一行上。

l = 5,r = 1e9,取 (mid,10) 输出,假如返回的是黑,则 二分区间向右边挤压,为了保证左边点全为黑,l = mid+1;

假如返回的是白,则二分区间向左边积压,保证右边点全为白,r = mid-1 。

这样子二分知道n个点输出完毕,然后 y = 0 这一行取一个黑白分界点,y = 10 取一个黑白分界点,将这两个点连起来即可分割所有黑白点。

反思:

这场cf的时候写完D就剩下15min了,然后就放弃了E...还是自己实力不足啊,写个D题这样的bfs都写这么久,实在是太需要加强自己的能力了...

代码:

#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>
#define rep(i,a,b) for(int i = a; i <= b; i++)
using namespace std;int n,jud;
char s[10];
char p1,p2;
int l,r;
int ans1,ans2;
int h1,h2;void solve1()
{
//  printf("1\n");int mid = (l+r)>>1;printf("%d 0\n",mid);fflush(stdout);scanf("%s",s);if(s[0] == p1){h1 = mid;l = mid+1;} else{jud = 1;ans1 = (h1+mid)>>1;h1 = 6;l = 6, r = 1e9;}
}void solve2()
{
//  printf("1\n");int mid = (l+r)>>1;printf("%d 10\n",mid);fflush(stdout);scanf("%s",s);if(s[0] == p1){l = mid+1;h1 = mid;}else{r = mid-1;h2 = mid;}
}int main()
{ans1 = 0, ans2 = 0;h1 = 0, h2 = 1e9;scanf("%d",&n);jud = 0;l = 6, r = 1e9-5;printf("5 5\n");h1 = 5;fflush(stdout);scanf("%s",s);if(s[0] == 'b') p1 = 'b', p2 = 'w';else p1 = 'w', p2 = 'b';rep(i,1,n-1){if(jud == 0) solve1();else solve2();}if(ans1 == 0){ans1 = (h1+(int)1e9)>>1;printf("%d 0 %d 10\n",ans1,ans1);}else{ans2 = (h1+h2)>>1;printf("%d 0 %d 10\n",ans1,ans2);}return 0;
}

【Codeforces Round #516_div2_E】【二分交互题】Dwarves, Hats and Extrasensory Abilities相关推荐

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

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

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

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

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

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

  4. codeforces1064E Dwarves, Hats and Extrasensory Abilities

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

  5. CF1063C Dwarves, Hats and Extrasensory Abilities

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

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

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

  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 1064 E. Dwarves, Hats and Extrasensory Abilities (交互题,二分)

    题目:http://codeforces.com/contest/1064/problem/E 题意:给定n个点,要求每次自己给出一个点的坐标(整数点),这时系统会给出该点的颜色(黑或白),要求最后存 ...

  10. cf1064E. Dwarves, Hats and Extrasensory Abilities(二分 交互)

    题意 题目链接 \(n\)次操作,每次你给出一个点的坐标,系统会返回该点的颜色(黑 / 白),程序最后输出一条直线把所有黑点和白点分隔开 Sol 一个很直观的想法:首先询问\((dx, 0)\),然后 ...

最新文章

  1. 活动目录管理之五种常见错误操作
  2. 编程范式,程序员的编程世界观
  3. post 返回代码_减少冗长代码,利用DDT轻松分离测试数据
  4. 团队-游戏《石头,剪刀,布》-团队一阶段互评
  5. .net生成文字图片
  6. java开发环境怎样选择_怎样搭建Java开发环境?
  7. LeetCode刷题(48)--Remove Duplicates from Sorted List II
  8. bzoj 1085: [SCOI2005]骑士精神(IDA*)
  9. 【OS】Process Thread
  10. back to wuxi
  11. 提取关键字 结巴分词_结巴分词5--关键词抽取
  12. unbuntu20.04下载opencv4.5.2
  13. 太极计算机股份有限公司面试经历
  14. win10,ubuntu18.04系统下图像识别YOLOv5菠萝_附菠萝数据集图片标签
  15. bat命令修改文件夹的后缀名
  16. Fresher的特殊求和
  17. for (char c : s)这种循环方式的使用
  18. EM算法(算法原理+算法收敛性)
  19. BUUCTF rsarsa
  20. DRILL(Sigcomm'17)阅读笔记

热门文章

  1. IOS错误---“A valid provisioning profile for this executable was not found”
  2. IT界那些性感的让人尖叫的程序员
  3. codeigniter_MY_Model
  4. 软件外包中常见的七个错误之一 - 不懂用户需求
  5. Python的随机矩阵生成
  6. OpenCV-图像处理(17、Sobel算子)
  7. nyoj20吝啬得过度(DFS)
  8. 大数阶乘 nyoj28
  9. linux 主机支持远程唤醒_linux 通过wol远程开机【转】
  10. modulenotfounderror python_你所不知道的 【ModuleNotFoundError: No module named ''; '' is not a package】...