Codeforces Round #415 (Div. 2) D. Glad to see you! 二分, 交互
来源:互联网 发布:卓奇电脑网络服务中心 编辑:程序博客网 时间:2024/06/09 00:07
题目链接:Glad to see you!
题目大意
n个菜, 编号从1-n, 其中有k个菜被点了, 你每次可以猜x, y两个数字, 如果|x-a|<=|y-b|
交互器会返回"TAK"
, 否则返回"NIE"
, 其中a是离x最近的一个被点过的菜的编号, a可以等于x, b同理
要求在60次内猜出任意两个被点了的菜 n<=1e5
思路
60次以内猜出, 肯定是logn级别的复杂度, 也就是二分
交互器返回的答案只能判断x和y离他们最近的点过的菜的距离哪个更小, 那么输出两个相邻的数字, mid和mid+1, 如果mid距离更近, 那么[1, mid]肯定有一个被点过的菜, 反之[mid+1, n]肯定有一个被点过的菜, 这样用二分的思想一直分割下去一定能的到一个位置x
因为有两个以上被点过的菜, 所以[1, x-1], [x+1, n]这两个区间中至少有一个菜, 同样的做法找到另一个
代码
#include <bits/stdc++.h>using namespace std;const int MANX = 1E5 + 100;int n, k;char s[100];bool query(int x, int y){ printf("1 %d %d\n", x, y); cout.flush(); scanf("%s", s); return s[0] == 'T';}int bs(int l, int r){ if(l>r) return -1; int mid; while(l < r) { mid = (l+r)/2; if(query(mid, mid+1)) r = mid; else l = mid+1; } return l;}int main(){ scanf("%d%d", &n, &k); int x = bs(1, n), y; if(x==1) y = bs(x+1, n); else if(x==n) y = bs(1, x-1); else { y = bs(1, x-1); if(!query(y, x)) y = bs(x+1, n); } printf("2 %d %d\n", x, y); return 0;}
阅读全文
0 0
- Codeforces Round #415 (Div. 2) D. Glad to see you! 二分, 交互
- [二分 交互] Codeforces 809B Round #415 (Div. 1) B. Glad to see you!
- [交互题][二分]Codeforces#415 (Div. 1) 809B. Glad to see you!
- codeforces 810 D . Glad to see you!
- Codeforces Round #251 (Div. 2) D 二分
- Codeforces Round #352 (Div. 2) D 二分
- Codeforces Round #377 (Div. 2) D 二分
- Codeforces Round #371 (Div. 2)D. Searching Rectangles交互题
- Codeforces Round #256 (Div. 2) D. Multiplication Table 二分
- Codeforces Round #274 (Div. 2) D. Long Jumps(二分)
- Codeforces Round #220 (Div. 2) D 树状数组 && 二分
- Codeforces Round #298 (Div. 2) D. Handshakes 二分
- Codeforces Round #316 (Div. 2) D. Tree Requests dfs_clock,二分
- Codeforces Round #256 (Div. 2) D Multiplication Table (二分)
- Codeforces Round #345 (Div. 2) D. Image Preview【二分】
- Codeforces Round #316 (Div. 2) D 【dfs序+二分】
- Codeforces Round #352 (Div. 2) D 二分贪心两头 + 细节
- Codeforces Round #361 (Div. 2) D RMQ+二分
- 【Linux】守护进程
- poj 2186_Popular Cows_强连通分量
- Eclipse导入Maven项目提示:Missing artifact sun.jdk:jconsole:jar:1.8
- 开始写blog
- 【设计模式】——单例模式
- Codeforces Round #415 (Div. 2) D. Glad to see you! 二分, 交互
- 贪心2-- Largest Rectangle in Histogram(LeetCode84)
- C语言深度剖析学习笔记-指针、数组、内存、函数
- Eclipse下编写C++程序——CDT环境搭建
- Java mail-1.4.5.jar 发送邮件
- bzoj1858: [Scoi2010]序列操作
- Spring @RequestMapping
- Linux运维 -- day01 使用VMware安装Linux系统
- Struts2_简单的Struts项目体验