P7597 「EZEC-8」猜树 加强版
#include<bits/stdc++.h>
using namespace std;
#define rg register
#define inf 0x3f3f3f3f
#define ll long long
inline int read(){
rg int ret=0,f=0;char ch=getchar();
while(!isdigit(ch)){if(ch=='-')f=1;ch=getchar();}
while(isdigit(ch)){ret=ret*10+ch-48;ch=getchar();}
return f?-ret:ret;
}
int n,u,dep[5005],siz[5005],sontree[5005][5005],son[5005];
int fa[5005];
bool vis[5005];
void dfs(int x){
if(!siz[x]) return;
int tmp=sontree[x][rand()%siz[x]+1],cnt=0;
random_shuffle(sontree[x]+1,sontree[x]+siz[x]+1);
for(rg int i=1;i<=siz[x];++i){
if(dep[sontree[x][i]]!=dep[x]+1) continue;
if(tmp==sontree[x][i]) u=0;
else printf("? 1 %d %d\n",sontree[x][i],tmp),fflush(stdout),u=read();
if(u==dep[tmp]-dep[sontree[x][i]]){
son[x]=sontree[x][i];
break;
}
}//找到重儿子。
memset(vis,0,sizeof(vis));
for(rg int i=1;i<=siz[x];++i){
if(dep[sontree[x][i]]==dep[x]+1&&sontree[x][i]!=son[x]){
printf("? 2 %d\n",sontree[x][i]); fflush(stdout);
siz[sontree[x][i]]=read()-1;
int cntnow=0;
for(rg int j=1;j<=siz[sontree[x][i]]+1;++j){
u=read(); vis[u]=1;
if(u!=sontree[x][i]) sontree[sontree[x][i]][++cntnow]=u;
}
}
}//询问轻儿子的子树
for(rg int i=1;i<=siz[x];++i){
if(!vis[sontree[x][i]]&&sontree[x][i]!=son[x])
sontree[son[x]][++siz[son[x]]]=sontree[x][i];
}//根据轻儿子的子树推出重儿子的子树。
for(rg int i=1;i<=siz[x];++i){
if(dep[sontree[x][i]]==dep[x]+1){
fa[sontree[x][i]]=x;
dfs(sontree[x][i]);
}
}//递归处理。
}
signed main(){
n=read();
for(rg int i=2;i<=n;++i){
printf("? 1 1 %d\n",i); fflush(stdout);
dep[i]=read(); sontree[1][++siz[1]]=i;
} //处理深度。
dfs(1);
printf("! ");
for(rg int i=2;i<=n;++i) printf("%d ",fa[i]);
puts("");
fflush(stdout);
return 0;
}
P7597 「EZEC-8」猜树 加强版的更多相关文章
- 「WC 2019」数树
「WC 2019」数树 一道涨姿势的EGF好题,官方题解我并没有完全看懂,尝试用指数型生成函数和组合意义的角度推了一波.考场上只得了 44 分也暴露了我在数数的一些基本套路上的不足,后面的 \(\ex ...
- [Luogu 3701] 「伪模板」主席树
[Luogu 3701] 「伪模板」主席树 这是一道网络流,不是主席树,不是什么数据结构,而是网络流. 题目背景及描述都非常的暴力,以至于 Capella 在做此题的过程中不禁感到生命流逝. S 向 ...
- 【题解】#6622. 「THUPC 2019」找树 / findtree(Matrix Tree+FWT)
[题解]#6622. 「THUPC 2019」找树 / findtree(Matrix Tree+FWT) 之前做这道题不理解,有一点走火入魔了,甚至想要一本近世代数来看,然后通过人类智慧思考后发现, ...
- P3701 「伪模板」主席树
题目背景 byx和手气君都非常都非常喜欢种树.有一天,他们得到了两颗奇怪的树种,于是各自取了一颗回家种树,并约定几年后比一比谁种出来的树更加牛x. 题目描述 很快,这棵树就开花结果了.byx和手气君惊 ...
- 「 hihoCoder 1014 」Trie 树
标题真直接 题目大意 给你 $n$ 个字符串.存到一个字典中.又给你 $m$ 个询问,每个询问给一个字符串,在字典中查出有多少个字符串是以这个字符串为前缀. 解题思路 模板题啊 在每个点设置一个变量 ...
- [Luogu] P3701 「伪模板」主席树
题目背景 byx和手气君都非常都非常喜欢种树.有一天,他们得到了两颗奇怪的树种,于是各自取了一颗回家种树,并约定几年后比一比谁种出来的树更加牛x. 题目描述 很快,这棵树就开花结果了.byx和手气君惊 ...
- 【luoguP3701】「伪模板」主席树
description byx和诗乃酱都非常都非常喜欢种树.有一天,他们得到了两颗奇怪的树种,于是各自取了一颗回家种树,并约定几年后比一比谁种出来的树更加牛x. 很快,这棵树就开花结果了.byx和诗乃 ...
- Solution -「51nod 1868」彩色树
\(\mathcal{Description}\) Link & 双倍经验 Link. 给定一棵 \(n\) 个结点的树,每个结点有一种颜色.记 \(g(u,v)\) 表示 \(u\) ...
- LuoguP3701 「伪模板」主席树
题面 这个题很有意思啊... 其实是道最大流板子题,只连byx会赢的边,S向byx连,另一个连T... 注意有长者时连的边加上同方mogician的个数... 还要注意mogician可以无限续命,也 ...
随机推荐
- 谈谈 Nginx 那点事【一】
为什么突然决定总结Nginx ? 不知不觉8月份又要过完了,时间真是个无情的崽种. 写Nginx 首先,主要源于最近项目部署工作中和公司技术中心的人对接部署相关事宜流程太繁琐了.每个部门有各自的工作安 ...
- 【SpringMVC】@RequestMapping注解
@RequestMapping注解的源码 @Target({ElementType.TYPE, ElementType.METHOD}) @Retention(RetentionPolicy.RUNT ...
- DNS地址列表
DNS测试工具(DNSBench):https://www.grc.com/dns/benchmark.htm DNS列表收集: Google DNS [URL]https://developers. ...
- yum 和 epel 的详解
一.概览 1.什么是repo文件 repo文件是Fedora中yum源(软件仓库)的配置文件,通常一个repo文件定义了一个或者多个软件仓库的细节内容,例如我们将从哪里下载需要安装或者升级的软件包,r ...
- 通过refresh响应头,定时刷新或隔n秒跳转页面
package day08; import java.io.IOException; import javax.servlet.ServletException; import javax.servl ...
- ABC类IP地址
A类IP地址一个A类IP地址由1字节的网络地址和3字节主机地址组成,网络地址的最高位 必须是"0", 地址范围从1.0.0.0 到126.0.0.0.可用的A类网络有126个,每个 ...
- Struts2常见问题
时间:2017-1-14 21:29 1.配置Struts2过滤器之后无法正常访问Servlet 自己手动配置过滤器,参数为要访问的Servlet
- java js转码解码
摘自网友:https://blog.csdn.net/sgear/article/details/1509400?utm_medium=distribute.pc_relevant.none-task ...
- git《一》
org.eclipse.jgit.api.errors.TransportException: https://gitee.com/wbweb/springboot_vue.git: Authenti ...
- Ecplise项目导入IDEA(纯小白名词解释)
1. Module 模块 一个大的项目不仅仅是只有Java的源文件,还有数据库,服务器,web等等文件一起使用,将类似于这样分类的文件定义为 module 例如 core Module(核心).web ...