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

题目大意:交互题,每次询问一个点,返回该点的颜色(黑或白),在询问\(n\)次后求出一条直线,使得该直线可以将相同颜色的点分到一边,如果不存在这样的直线则判定为Wrong Answer

     也就是说,询问的点要能保证,无论对方怎么回答,都能找到一条合法的直线满足条件。

题解:先引入两个概念:基准色基准线。

   基准色,即询问的第一个点的颜色

   基准线,代表着下一次要询问基准线上的点,且基准线可以作为当前状态下的答案(在基准线左边的点的颜色与基准色相同,右边的颜色都与基准色不同)。基准线的一端为原点\((0,0)\)。

   每次询问时,若询问结果与基准色相同,则把基准线的另一端向右移动一段距离,否则向左移动。但是为了保证基准线的合法性,还需要确定这一段距离要取多长。

   由于\(n\)不超过30,考虑在\(2\)的次幂上做文章。假设当前还剩\(k\)个点未询问,则将\(2^k\)作为移动的距离。这样子就能保证无论怎么移动,基准线的移动都不会越过已经被询问过的点了。但是此时出现了一个问题,即最坏情况下,基准线的移动会不会超出题目的限制。可以发现,当所有点的颜色都与基准色相同时,移动的总距离为\(\sum_{i=0}^{n-1}2^i=2^n-1\),当\(n\)为\(30\)时,有\(2^n-1=1073741823>10^9\),超过了坐标的限制。因此当其超出范围时,需要将超出部分放在边界的右边。例如,当要询问的点为\((10^9+7,10^9)\)时,用\((10^9,10^9-7)\)来代替即可。

#include<bits/stdc++.h>
using namespace std;
int n,x,y,c,o=1000000000;
char s[10];
int ask(int x)
{if(x>o)printf("%d %d\n",o,2*o-x);else printf("%d %d\n",x,o);fflush(stdout);scanf("%s",s);return s[0]=='b';
}
int main()
{scanf("%d",&n);c=ask(0);if(n==1)return printf("0 0 %d %d\n",o,o),0;n--;int cur=1<<n;while(n){int tmp=ask(cur);n--;if(tmp==c)cur+=1<<n;else cur-=1<<n;}printf("0 0 ");if(cur>o)printf("%d %d\n",o,2*o-cur);else printf("%d %d\n",cur,o);return 0;
}

View Code

转载于:https://www.cnblogs.com/DeaphetS/p/9787823.html

[Codeforces Round #516][Codeforces 1063C/1064E. 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】1063C Dwarves, Hats and Extrasensory Abilities【二分】

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

  3. CF1063C Dwarves, Hats and Extrasensory Abilities

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

  4. codeforces1064E Dwarves, Hats and Extrasensory Abilities

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

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

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

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

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

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

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

  8. codeforces 1064 E. Dwarves, Hats and Extrasensory Abilities (交互题,二分)

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

  9. codeforces C - Dwarves, Hats and Extrasensory Abilities

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

最新文章

  1. 《Redis设计与实现》阅读笔记(二)--简单动态字符串
  2. 无监督学习与有监督学习的本质区别是什么_吴恩达老师课程笔记系列第三节-无监督学习定义...
  3. linux 爬虫工具,技术|如何在Ubuntu 14.04 LTS安装网络爬虫工具:Scrapy
  4. cordova打包安卓app
  5. 压缩信息立方体和集合技术内幕
  6. mysql怎么开启事务日志_mysql中操作事务时要注意的事项
  7. Java学习路线图(完整详细2021版)
  8. STM32+华为云IOT设计的动态密码锁
  9. 浅谈ERP数据的重要性
  10. iOS动画效果合集、飞吧企鹅游戏、换肤方案、画板、文字效果等源码
  11. 手机HTML拼图验证,jQuery支持移动端的滑动块拼图验证插件
  12. Facebook POP 进阶指南
  13. 【二维码识别】灰度+二值化+校正二维码生成与识别【含GUI Matlab源码 635期】
  14. linux安装教程以及使用时遇到的问题和解决方法
  15. java 实现查询近七天数据功能
  16. 《Android Studio开发实战》学习(一)- Hello World
  17. 自动驾驶-目标检测-路标数据
  18. PMP之假设日志Assumption Log
  19. Android仿微信图片浏览
  20. SQL,判断获取的数字是奇数还是偶数

热门文章

  1. 【微信小程序】微信开发者工具 app.json: [“subpackages“][0][“root“] 字段需为目录 已解决
  2. python 财务系统开源系统_10 大顶级开源 ERP 系统
  3. 地图实现-网页版Google Map
  4. fread函数 和 feof函数
  5. Oracle字符串类型扩容隐患
  6. Vue页面与页面之间的传值(router.push()编程式导航)
  7. Python面试题之Python面试题汇总
  8. 服务器系统如何管理网络连接不上,详解Windows Server 2008网络设置技巧技术教程...
  9. TCP的三个窗口:发送窗口swnd、接收窗口rwnd、拥塞窗口cwnd
  10. 戴尔R730 RAID崩溃 38T数据恢复要多久?