题意:给一颗树,和一个隐藏的节点x,在36次询问内求出x。

每次询问: 1.询问x到某一结点u的距离   2.某个节点u到x的路径上,得到u的儿子节点(u必须是x的祖先,否则WA)。

思路:

首先处理出重链。

从根节点u开始,记u上的重链的链尾是v。

求出lca(v,x) 记作y。

然后执行操作2,求出y的x所在的子树的根节点(红色部分)。

那么在这个新子树上重复以上操作,除了子树的其他部分删去(绿色部分)。

跳出的出口:当x和y在同一节点时。

每次查询两次,且删掉一半的节点,所以最多只有36次。

跳出的出口和交互是真的快写?了,

#include<bits/stdc++.h>
using namespace std;
#define LL long long
#define FI first
#define SE second
const LL mod =1e9+7;
const int MX = 2e5+5;
int n;vector<int>g[MX];
int fa[MX],d[MX],sz[MX],son[MX],id[MX],rk[MX],top[MX],bot[MX];
/*   父亲,深度,子节点数,重儿子, dfs序,dfs映射,链头, 链尾     */
int clockCnt;
void dfs(int now,int dd){d[now]=dd;sz[now]=1;for(auto i:g[now]){if(i==fa[now])continue;fa[i]=now;dfs(i,dd+1);sz[now]+=sz[i];if(sz[i]>sz[son[now]]) son[now]=i; //重儿子}
}
void redfs(int now,int tp){top[now]=tp;//保存当前节点所在链的顶端节点id[now]=++clockCnt;rk[clockCnt]=now;//标记dfs序并反向映射if(son[now])redfs(son[now],tp),bot[now]=bot[son[now]];//选择择优先进入重儿子来保证一条重链上各个节点dfs序连续,一个点和它的重儿子处于同一条重链,所以重儿子所在重链的顶端还是ttelse bot[now]=now;for(auto i:g[now]){if(i!=fa[now]&&i!=son[now])redfs(i,i);//进入轻链}
}
int main(){cin>>n;for(int i=1;i<n;i++){int su,sv;scanf("%d%d",&su,&sv);g[su].push_back(sv);g[sv].push_back(su);}dfs(1,1);redfs(1,1);int u=1,v=bot[u];printf("d %d\n",u);fflush(stdout);int utox;cin>>utox;while(1){printf("d %d\n",v);fflush(stdout);int vtox;scanf("%d",&vtox);int utoy=utox+id[v]-id[u]-vtox;utoy/=2;int y=rk[id[u]+utoy];if(utox==utoy){printf("! %d\n",y);return 0;}printf("s %d\n",y);fflush(stdout);scanf("%d",&u);v=bot[u];utox=utox-utoy-1;}return 0;
}
/*14
1 2 1 3 1 4
2 5 2 6
3 7
4 8 4 9 4 10
6 11 6 12
9 13 13 14*/
/*
9
1 2 2 3 3 4
4 5 5 6
4 7 7 8 8 9
5
5
5
*/

树链剖分

大概就是处理出这么个东西。

CF #563 Div2 F. Ehab and the Big Finale //树链剖分(模板)+ 交互相关推荐

  1. Codeforces Round #563 (Div. 2) F. Ehab and the Big Finale

    后续: 点分治标程 使用father数组 比使用vis数组优秀(不需要对vis初始化) https://codeforces.com/problemset/problem/1174/F https:/ ...

  2. Codeforces Round #628 (Div. 2) F. Ehab‘s Last Theorem dfs树

    传送门 文章目录 题意: 思路: 题意: 给你个nnn个点mmm条边的图,可以选择完成以下两个任务中的一个: (1)(1)(1)找出大小恰好为n\sqrt nn​的一个独立集. (2)(2)(2)找出 ...

  3. Codeforces#1157 F. Ehab and the Big Finale (思维+交互题)

    链接: http://codeforces.com/contest/1174/problem/F 题意: 给你一颗树,需要你求出某个已知点,你有两种询问操作 问你能否在36次询问之内得知所求点 思路: ...

  4. Codeforces Round #563 (Div. 2)-F. Ehab and the Big Finale

    地址:https://codeforces.com/contest/1174/problem/F 思路:思维+分治 官方题解:https://codeforces.com/blog/entry/673 ...

  5. Ehab and the Big Finale【交互】【树链剖分】

    题目链接:https://codeforces.com/contest/1174/problem/F 参考题解:https://dudulu.net/blog/?p=1696 #include < ...

  6. CF1174F Ehab and the Big Finale 树分治

    https://codeforces.com/contest/1174/problem/F 题意: 交互题,给出一棵树,1为树根,有一点x为目标点. 有两种操作 d a: 询问a到x的距离,s a:询 ...

  7. CodeForces - 1401 F Reverse and Swap(线段树, 区间翻转, 区间交换,清晰易懂)

    CodeForces - 1401 F Reverse and Swap(线段树, 区间翻转, 区间交换)   首先一共有四个操作,第一个和第四个都是线段树的基本操作,直接用线段树实现.      第 ...

  8. CF #673 div2 赛后总结

    文章目录 前言 A B C D E F 前言 完成成就:在学校熬夜熬到1点 第一次CF打比赛就炸成这个样子 A 题目翻译: 一个长度为 n n n的数组,每次选择 i , j ( 1 ≤ i , j ...

  9. CF 868 div2 A—C

    A 题就是一个预处理然后进行枚举 首先数据范围不是很大 然后我们依照题意看看如何构造出对应的要求,也就是说我们需要在不同的下标下使得 ai*aj=1 那么只有1 1 或者-1 -1 那么这个不管是1 ...

最新文章

  1. 深度学习不可信?大脑建模先驱有话说
  2. mysql典型sql示例(DML)
  3. java 编译开关_java – 字符串是关于开关的数字类型,并始终编译为lookupswitch?
  4. Scala入门到精通——第十九节 隐式转换与隐式参数(二)
  5. C#获取本机可用端口
  6. Codeforces Round #743 (Div. 2) D. Xor of 3 模拟 + 构造
  7. 金叉成功率_一个非常强烈的买卖信号:三金叉见顶,三死叉见底,短短10字,但是成功率却远超“金叉买,死叉卖”...
  8. 蒙特卡洛方法_【每日一题56】蒙特卡洛方法 用试验所得的频率估计事件发生概率...
  9. 【C语言】第三章 基本运算与顺序结构 题解
  10. Android 系统(132)---ODM 开发用户常见需求文档(六)
  11. java sender_Spring Boot用JavaMailSender发送邮件方法
  12. 「JXOI2018」游戏
  13. 输入电容及DCM-CCM-QR变压器计算
  14. 51单片机12864大液晶屏俄罗斯方块 ROTEUS 和51单片机教程(仿真文件+源代码)
  15. android按钮悬停吸附,Android简单实现悬浮吸附的FloatingView
  16. 如何看待数字藏品越来越火
  17. 招行首发芭比娃娃MP3
  18. matlab 网络分析仪,N5244A网络分析仪安捷伦N5244A
  19. python程序的三种控制结构_python二级考试大纲内容:程序的三种控制结构
  20. 靠一己之力造就3个首富,丁磊、刘强东、宗庆后背后的神秘女人

热门文章

  1. 编写一个猥琐的反爬虫系统是种怎样的体验
  2. 什么是三态输出电路?什么是集电极开路输出和漏极开路输出?
  3. 基于STM32的简易密码锁
  4. NOKIA5110液晶显示模块学习笔记
  5. 明明装了驱动,当前打印机不可用,怎么办?
  6. 一道小学奥数题的编程解法
  7. 【电力系统】基于matlab粒子群算法求解热电联产系统优化配置问题【含Matlab源码 2298期】
  8. 小程序源码:最新wordpress黑金壁纸微信小程序 二开修复版源码下载支持流量主收益
  9. 了解以下几点,让你的精灵4RTK应用更专业
  10. excel写为字节流使用base64加解密