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;
}
}

最新文章

  1. 同比 VS 环比
  2. 修改C:\WINDOWS\system32\drivers\etc\hosts 文件有什么作用
  3. 多线程完成socket
  4. Mobizen免帐号版
  5. Extjs的GridPanel的RowExpander的扩展
  6. Mac OS X 上的安装haskell开发环境
  7. 12.Generics
  8. POJ2282:The Counting Problem(数位DP)
  9. SSH框架jar神包
  10. B*tree dump
  11. uboot全局变量
  12. qt博客
  13. 2016年中国大学生程序设计竞赛(杭州)1006 Four Operations
  14. VueJS引入css或者less文件的一些坑
  15. mybatis-pageHelper做分页
  16. angular路由守卫
  17. Linux基础命令mkdir
  18. Spring boot @EnableScheduling 和 @Scheduled 注解使用例子
  19. vue+窗格切换+田字+dicom显示_01
  20. PHP通过PDFParser解析PDF文件

热门文章

  1. vue框架学习笔记(vue入门篇)
  2. AutoCAD配置的Heidi驱动程序未加载
  3. ASP.NET Core 中使用负载均衡时获取客户端 IP
  4. React: React的复合组件
  5. 转载-SpringBoot结合线程池解决多线程问题实录;以及自己的总结
  6. H5生成二维码
  7. 《细说PHP》 第四版 样章 第二章 PHP的应用与发展 4
  8. 轻量级监控平台之java进程监控脚本
  9. oracle学习笔记(八)——结果集元数据ResultSetMetaData以及ResultSet转为对应的实体类框架
  10. java基础(25):Properties、序列化流、打印流、commons-IO