codeforces415D. Glad to see you!(交互)
2024-09-30 09:47:21
题意
交互题。
有$k$个值域为$[1, n]$的数。
请在不超过$60$次询问内找出其中的两个数。
每次询问形式为1 x y
交互库会返回$|x - a| <= |y - b| ? "TAK" : "NIE"$
其中$a, b$分别是使得$|x - a|,|y - b|$最小的且存在于序列中的数。
Sol
若询问$x, x + 1$的结果为“TAK”,说明在$1, x$内一定有解。
我们可以不断这样二分下去。直到找到一个解。
再在$1, x - 1$和$x +1, N$中重复以上操作,找到另一组解。
#include<iostream>
using namespace std;
int N, K;
string Yes = "TAK";
int check(int x) {
if(x + > N) return ;
printf("1 %d %d\n", x, x + );
fflush(stdout);
string buf;
cin >> buf;
return buf == Yes ? : ;
}
int Query(int l, int r) {
int ans = -;
while(l <= r) {
int mid = l + r >> ;
if(check(mid)) r = mid - , ans = mid;
else l = mid + ;
}
return ans;
}
int main() {
ios::sync_with_stdio(false); cin.tie();
cin >> N >> K;
int a1 = Query(, N);
int a2 = Query(, a1 - );
int a3 = Query(a1 + , N);
printf("2 %d %d", a1, a2 == - ? a3 : a2);
return ;
}
最新文章
- 传智博客.NET培训第13季 Ajax教程(共十三季) 学习资源
- Ubuntu技巧之 is not in the sudoers file解决方法
- win8中如何禁用屏幕旋转的快捷键
- uva 10910
- bzoj 2707 [SDOI2012]走迷宫(SCC+高斯消元)
- C#与.Net Framework的各种版本和联系
- TCP全连接队列和半连接队列已满之后的连接建立过程抓包分析[转]
- leetcode — generate-parentheses
- CentOS7使用firewalld和selinux
- Spring基础(2):bean顺序创建
- Dynamics CRM Online Administrator password reset
- 【问题收集·中级】关于XMPP使用Base传送图片
- Eclipse 写 Python的一些小问题
- 《内存数据库和mysql的同步机制》
- [域|Domain] The trust relationship between this workstation and the primary domain failed 此工作站和主域间的信任关系失败
- HBase的常用Java API
- selinux-网络服务安全
- 随机森林和adaboost算法(待更新)
- Spring MVC框架下 从后台读取数据库并显示在前台页面【笔记自用 不推荐作为参考】
- python 基础 1.5 python数据类型(四)--字典
热门文章
- (linux)SD卡初始化-mmc_sd_init_card函数
- react native 中的redux 理解
- 如何查看一个Application是32位的还是64位的?
- MYSQL初级学习笔记八:MySQL中常用的函数!(视频序号:初级_45-50)
- Tomcat版本是32位、64位问题
- Gym - 100342J:Triatrip(Bitset加速求三元环的数量)
- BZOJ1453: [WC2005]Dface双面棋盘
- linux基于流的文件操作
- Mysql基础调优
- 算法练习--LeetCode--29. Divide Two Integers