题目


分析

考虑询问所有点可以知道两个标记点路径上的一个点,

以该点为根建树,可以二分出离该点较远的一个标记点,

再用这个标记点一次询问推出另一个,最多11次询问


代码

#include <cstdio>
#include <cctype>
#include <cstring>
#include <algorithm>
#include <vector>
#define rr register
using namespace std;
const int N=1011; struct node{int y,next;}e[N<<1]; char S[11];
vector<int>K[N]; int t,n,et,Top,as[N],dep[N],ans1,ans2,len;
inline signed iut(){
rr int ans=0; rr char c=getchar();
while (!isdigit(c)) c=getchar();
while (isdigit(c)) ans=(ans<<3)+(ans<<1)+(c^48),c=getchar();
return ans;
}
inline void dfs(int x,int fa,int Dep){
t=max(t,Dep),K[Dep].push_back(x);
for (rr int i=as[x];i;i=e[i].next)
if (e[i].y!=fa) dfs(e[i].y,x,Dep+1);
}
signed main(){
for (rr int T=iut();T;--T){
n=iut(),et=1,Top=0;
memset(as,0,sizeof(as));
for (rr int i=1;i<n;++i){
rr int x=iut(),y=iut();
e[++et]=(node){y,as[x]},as[x]=et;
e[++et]=(node){x,as[y]},as[y]=et;
}
printf("? %d",n);
for (rr int i=1;i<=n;++i) printf(" %d",i);
putchar(10),fflush(stdout);
ans1=iut(),len=iut(),dfs(ans1,0,0);
rr int l=(len-1)/2+1,r=min(len,t);
while (l<=r){
rr int mid=(l+r)>>1,LEN,SIZ=K[mid].size();
printf("? %d",SIZ);
for (rr int i=0;i<SIZ;++i) printf(" %d",K[mid][i]);
putchar(10),fflush(stdout);
ans2=iut(),LEN=iut();
if (LEN==len) ans1=ans2,l=mid+1;
else r=mid-1;
}
for (rr int i=0;i<=t;++i) K[i].clear(); t=0;
dfs(ans1,0,0);
rr int SIZ=K[len].size();
printf("? %d",SIZ);
for (rr int i=0;i<SIZ;++i) printf(" %d",K[len][i]);
putchar(10),fflush(stdout),ans2=iut(),iut();
for (rr int i=0;i<=t;++i) K[i].clear(); t=0;
printf("! %d %d\n",ans1,ans2);
fflush(stdout),scanf("%s",S+1);
}
return 0;
}

#交互#CF1370F2 The Hidden Pair (Hard Version)的更多相关文章

  1. CF1370F2-The Hidden Pair(Hard Version)【交互题,二分】

    正题 题目链接:https://www.luogu.com.cn/problem/CF1370F2 题目大意 \(T\)组数据,给出\(n\)个点的一棵树,有两个隐藏的关键点.你每次可以询问一个点集, ...

  2. Solution -「CF 1370F2」The Hidden Pair (Hard Version)

    \(\mathcal{Description}\)   Link (hard) & Link (easy).   这是一道交互题.   给定一棵 \(n\) 个结点的树,其中有两个是特殊结点. ...

  3. layui 父子弹窗数据交互(包含子弹窗自己关闭并给父弹窗数据填充)

    //父级弹窗 function showAlertOrg() { layui.use('layer', function () { var body; var index = layer.open({ ...

  4. 利用Netty构建自定义协议的通信

    在复杂的网络世界中,各种应用之间通信需要依赖各种各样的协议,比如:HTTP,Telnet,FTP,SMTP等等. 在开发过程中,有时候我们需要构建一些适应自己业务的应用层协议,Netty作为一个非常优 ...

  5. Python开发入门与实战1-开发环境

    1.搭建Python Django开发环境 1.1.Python运行环境安装 Python官网:http://www.python.org/ Python最新源码,二进制文档,新闻资讯等可以在Pyth ...

  6. 跨平台移动框架iMAG开发入门

    iMAG是一个非常简洁高效的移动跨平台开发框架,开发一次能够同一时候兼容Android和iOS平台,有点儿Web开发基础就能非常快上手.当前移动端跨平台开发的框架有非常多,但用iMAG另一个优点,就是 ...

  7. 可扩展标记语言XML

    XML简述 XML用于描述数据,是当前处理结构化文档信息的有力工具.与操作系统编程语言的开发平台无关,可以实现不同系统之间的数据交互. 结构 <?xml version="1.0&qu ...

  8. Quartz简单实现定时任务管理(SSM+Quartz)

    首先你得有一个用Maven搭好的SSM框架,数据库用的Mysql,这里只有关于Quartz的部分.其实有大神总结的很好了,但做完后总有些地方不一样,所以写这篇作为笔记.这里先把大神的写的分享给大家:h ...

  9. [python] python django web 开发 —— 15分钟送到会用(只能送你到这了)

    1.安装python环境 1.1 安装python包管理器: wget https://bootstrap.pypa.io/get-pip.py sudo python get-pip.py   1. ...

  10. scrapy 基础

    安装略过 创建一个项目 scrapy startproject MySpider #或者创建时存储日志scrapy startproject --logfile='../logf.log' MySpi ...

随机推荐

  1. Java Http客户端选型

    JDK自带 HTTPURLConnect:功能单一 Apache HttpClient https://hc.apache.org/index.html 是一个比较古老的HTTP框架,使用非常普遍. ...

  2. 阿里云 SMS 短信 Java SDK 封装

    Github & Issues: https://github.com/cn-src/aliyun-sms 官方文档:https://help.aliyun.com/document_deta ...

  3. 基于javaweb的个人音乐网站

    一 .需求 ① 前台用户: 用户注册和登录以及完善个人资料: 添加好友功能(用户之间可通过发送好友申请添加好友,被添加人可以同意或拒绝好友申请): 下载歌曲功能(当用户点击下载按钮时,就能下载相对应的 ...

  4. Linux操作系统加固建议

    1.1.1 口令锁定策略 1.执行备份 (1).redhat执行备份: #cp -p /etc/pam.d/system-auth /etc/pam.d/system-auth_bak (2).SUS ...

  5. AP渗透测试学习

    1.测试指标 2.测试环境 SDK: Java JDK  ,Android SDK 工具: 7zip    dex2jar   jd-gui     apktool  activity 劫持工具 3. ...

  6. 摆脱鼠标系列 vscode 向右拆分编辑器 ctrl + 右箭头

    摆脱鼠标系列 vscode 向右拆分编辑器 ctrl + 右箭头 为什么 今天看见一个两栏工作的,左侧放的是目录大纲,右侧是代码内容 用快捷键 ctrl + 右箭头 快速扩展一个,关闭可以ctrl + ...

  7. mainWindow = new BrowserWindow 打开慢的原因 electron 已解决 Windows Defender 拦截导致

    Windows Defender 导致拦截 不是变量的事儿 解决方案: win10 开始 设置 - windows 安全中心 - 病毒和威胁防护 - 病毒和威胁防护设置 - 排除项 - 添加排除项 将 ...

  8. 关于debian安装完后输入法的问题

    sudo apt install ibus-libpinyin后 重启计算机

  9. stm32读写sd卡代码解析和调试总结

    一 前言   做程序员真是来不得半点偷懒,假如你对经常使用的代码不熟悉,早晚会让你付出沉重的代价.像认识自己的灵魂一样认识每行用到的代码,这才是一个合格的程序员,才不至于在出现问题的时候出现慌乱.   ...

  10. stm32 fatfs 文件系统分析和代码解析

    一 文件系统: 文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NAND Flash的固态硬盘)或分区上的文件的方法和数据结构:即在存储设备上组织文件的方法.操作系统中负责管理和存储文件信息 ...