Forethought Future Cup - Elimination Round C 二分 + 交互(求树的直径)
2024-09-07 13:10:40
https://codeforces.com/contest/1146/problem/C
题意
一颗大小为n的树,每次可以询问两个集合,返回两个集合中的点的最大距离,9次询问之内得出树的直径
题解
- 求树的直径:先找到一个点a,找到离他最远的一个点b,最后找到距离b最远的点c,b和c之间的距离就是树的直径
- 先询问离1最远的距离,然后二分找到这个点a,然后询问a的最远距离
代码
#include<bits/stdc++.h>
#define fk fflush(stdout)
using namespace std;
int T,x;
int qy(int l,int r){
printf("1 %d 1",r-l+1);
for(int i=l;i<=r;i++)printf(" %d",i);
printf("\n");
fk;
int x;
scanf("%d",&x);
return x;
}
int main(){
scanf("%d",&T);
while(T--){
int ans,n;
scanf("%d",&n);
printf("1 %d",n-1);
for(int i=1;i<=n;i++)printf(" %d",i);
printf("\n");
fk;
scanf("%d",&x);
int l=2,r=n,mid;
while(l<r){
mid=(l+r)/2;
if(qy(l,mid)<x)l=mid+1;
else r=mid;
}
printf("1 %d",n-1);
printf(" %d",l);
for(int i=1;i<=n;i++)if(l!=i)printf(" %d",i);
printf("\n");
fk;
scanf("%d",&ans);
printf("-1 %d\n",ans);
fk;
}
}
最新文章
- 同比 VS 环比
- 修改C:\WINDOWS\system32\drivers\etc\hosts 文件有什么作用
- 多线程完成socket
- Mobizen免帐号版
- Extjs的GridPanel的RowExpander的扩展
- Mac OS X 上的安装haskell开发环境
- 12.Generics
- POJ2282:The Counting Problem(数位DP)
- SSH框架jar神包
- B*tree dump
- uboot全局变量
- qt博客
- 2016年中国大学生程序设计竞赛(杭州)1006 Four Operations
- VueJS引入css或者less文件的一些坑
- mybatis-pageHelper做分页
- angular路由守卫
- Linux基础命令mkdir
- Spring boot @EnableScheduling 和 @Scheduled 注解使用例子
- vue+窗格切换+田字+dicom显示_01
- PHP通过PDFParser解析PDF文件
热门文章
- vue框架学习笔记(vue入门篇)
- AutoCAD配置的Heidi驱动程序未加载
- ASP.NET Core 中使用负载均衡时获取客户端 IP
- React: React的复合组件
- 转载-SpringBoot结合线程池解决多线程问题实录;以及自己的总结
- H5生成二维码
- 《细说PHP》 第四版 样章 第二章 PHP的应用与发展 4
- 轻量级监控平台之java进程监控脚本
- oracle学习笔记(八)——结果集元数据ResultSetMetaData以及ResultSet转为对应的实体类框架
- java基础(25):Properties、序列化流、打印流、commons-IO