CF1063C Dwarves, Hats and Extrasensory Abilities

题意:

首先题目会给出 n ,表示要输入多少点。 然后你输出n 个点的坐标,每输出一个点会告诉你这个点的颜色是黑色或者白色。 最后你需要输出两个点的坐标代表一条直线,这条直线能够将你刚刚给出的点分成两份,一份全都是黑色的点,另一份全都是白色的点。

所有的点不能重叠,所有点不能和最后输出的直线重叠,每个点的黑白是随机给出的,你需要保证你输出的数据有解并输出解。

题解:

基本上交互都跟二分有关系
我一开始一点头绪都没有,但我们可以这样想,我们可以在一条线上选黑白点,然后不断询问中点位置的颜色,不断二分距离范围。
就比如如果(0,0)是白色,下一次就问(1e9/2,0),如果是黑色,就问(1e9/2/2,0)是什么颜色,这样二分找,可以将黑白分隔开,最后答案就是最后两个黑白快的中点
log2(1e9)=29.897353,n最大30,有可能会被卡?我提交后还真是,在59这个点疯狂被卡,我猜应该是二分到最后刚好用完没地方了,导致最后答案与某个黑白块重叠,这咋整?
我突然想到一个方法,我们最后的答案想的是二分最后一下,得到一个整数解,但题目要求你输出的是直线,而这个直线与黑白所在直线的交点不用是整数点,所以我们可以输出最后一个白块下方的点,最后一个黑块上方的点,这样的直线也正好平分黑白点,而且不会占用整数点

代码:

#include <bits/stdc++.h>
#include <unordered_map>
#define debug(a, b) printf("%s = %d\n", a, b);
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> PII;
clock_t startTime, endTime;
//Fe~Jozky
const ll INF_ll= 1e18;
const int INF_int= 0x3f3f3f3f;
void read(){};
template <typename _Tp, typename... _Tps> void read(_Tp& x, _Tps&... Ar)
{x= 0;char c= getchar();bool flag= 0;while (c < '0' || c > '9')flag|= (c == '-'), c= getchar();while (c >= '0' && c <= '9')x= (x << 3) + (x << 1) + (c ^ 48), c= getchar();if (flag)x= -x;read(Ar...);
}
template <typename T> inline void write(T x)
{if (x < 0) {x= ~(x - 1);putchar('-');}if (x > 9)write(x / 10);putchar(x % 10 + '0');
}
void rd_test()
{#ifdef ONLINE_JUDGE
#elsestartTime = clock ();freopen("data.in", "r", stdin);
#endif
}
void Time_test()
{#ifdef ONLINE_JUDGE
#elseendTime= clock();printf("\nRun Time:%lfs\n", (double)(endTime - startTime) / CLOCKS_PER_SEC);
#endif
}
map<int,int>mp;
int main()
{rd_test();int n;cin>>n;int l=0,r=1e9;printf("0 1\n");mp[0]=1;fflush(stdout);int lf=-1,f=-1,rf=-1;string s;cin>>s;if(s=="black")lf=0;else lf=1;for(int i=1;i<n;i++){int mid=l+r+1>>1;printf("%d 1\n",mid);fflush(stdout);mp[mid]=1;cin>>s;if(s=="black")f=0;else f=1;if(f==lf)l=mid;else if(f==rf)r=mid;else if(rf==-1){rf=f;r=mid;}}printf("%d %d %d %d\n",l,0,r,2);//Time_test();
}

CF1063C Dwarves, Hats and Extrasensory Abilities相关推荐

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

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

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

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

  3. codeforces1064E Dwarves, Hats and Extrasensory Abilities

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

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

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

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

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

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

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

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

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

  8. codeforces C - Dwarves, Hats and Extrasensory Abilities

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

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

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

最新文章

  1. 基于 Kafka 与 Debezium 构建实时数据同步
  2. 数据结构----数组与广义表专题
  3. androidstudio build tools安装_如何导入Android Studio(AS)项目
  4. 【MFC】工具栏按钮多选效果本
  5. 计算机vfp考试题库二级,XYZ计算机等级考试题库系统(二级VFP)
  6. Java虚拟机垃圾回收
  7. JS-13-jquery
  8. UG NX 12 草图
  9. w3c 菜鸟mysql_w3c菜鸟
  10. openssl版本升级
  11. 百变鹏仔缤纷彩色文字广告位代码美化版
  12. Hyper-V的使用技巧及管理方法
  13. flex布局HTML实例,Flex常见布局实例
  14. Illegal unquoted character ((CTRL-CHAR, code 10)): has to be escaped using backflash to be included
  15. 前端实现打电话、发短信邮件
  16. 区块链的典型应用场景与落地应用案例
  17. linux中位置变量
  18. 2022工作中遇到问题一
  19. DNS和Web服务的配置与访问
  20. MySQL: 垂直分片

热门文章

  1. 高一被清华姚班录取,高三委拒谷歌offer,一个重度网瘾少年到理论计算机科学家的蜕变...
  2. 漫谈高数——泰勒级数的物理意义
  3. 从生物神经网络到人工神经网络
  4. mysql 命令 g_MySQL命令行的几个用法
  5. dreamweaver连接mysql数据库 发生一个不知名错误_用DREAMWEAVER连接数据库测试时总是弹出发生一个不知名的错误 你好! 请问一下这个问题你是怎么解的?...
  6. 超时锁定计算机,就会发现多了一个控制台锁定显示关闭超时选项
  7. 华为的型号命名规则_华为最实惠5G手机来了!畅享Z 5G宣布:5月24日发
  8. python数组的切片操作_对Python 数组的切片操作
  9. c语言程序设计黄保和第二章,C语言程序设计答案(黄保和编)第6章
  10. 数据结构——用栈解决回文字符问题