CF825G Tree Queries
【题意】
一棵树有n个节点,初始均为白色,有两种操作:
1. 1 x 代表把结点 x 设置为黑色
2. 2 x 代表查询 x 到树上任意一个黑色结点的简单路径上的编号最小的结点的编号
输入 t 和 z ,其中 t 表示操作类型, x=(last+z)mod n+1,last代表上一次询问答案,初始为 0 ,保证第一个操作为 1
【数据范围】
n,q<=1e6.
【题解】
发现第一个操作保证是1,则可以以第一个染黑的点为根,则每个点到它路径上最小值dis[i]可以预处理出。
发现一个点到所有黑点路径中编号最小的为每个黑点与这个点到根上的编号最小值。
代码如下:
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+;
int n,q,last[N],dis[N],size,last1,opt,xx,zx;
struct pigu
{
int dao,ne;
}a[N<<];
inline void lingjiebiao(int x,int y)
{
a[++size].dao=y;
a[size].ne=last[x];
last[x]=size;
}
inline void dfs(int now,int fa)
{
dis[now]=min(dis[now],now);
for(int i=last[now];i;i=a[i].ne)
{
if(a[i].dao==fa) continue;
dis[a[i].dao]=dis[now];
dfs(a[i].dao,now);
}
}
inline int read()
{
char c=getchar();
int x=;
while(!isdigit(c)) c=getchar();
while(isdigit(c)) {x=(x<<)+(x<<)+c-'';c=getchar();}
return x;
}
int main()
{
memset(dis,0x3f,sizeof(dis));
n=read();q=read();
for(int i=,x,y;i<=n-;i++)
{
x=read();y=read();
lingjiebiao(x,y);
lingjiebiao(y,x);
}
opt=read();xx=read();
int rt=xx%n+;
dfs(rt,);
zx=dis[rt];
for(int i=;i<=q-;i++)
{
opt=read();xx=read();
xx=(last1+xx)%n+;
if(opt==)
{
zx=min(zx,dis[xx]);
}
else
{
cout<<min(zx,dis[xx])<<"\n";
xx=min(zx,dis[xx]);
last1=xx;
}
}
}
CF825G Tree Queries的更多相关文章
- Codeforces 960D - Full Binary Tree Queries
960D - Full Binary Tree Queries 思路: 用move1[i]记录第i层第1种操作移动的个数(对这一层的个数取模) 用move2[i]记录第i层第2种操作移动的个数(对这一 ...
- AC日记——825G - Tree Queries
825G - Tree Queries 思路: 神题,路径拆成半链: 代码: #include <cstdio> #include <cstring> #include < ...
- CF1328E Tree Queries
CF1328E Tree Queries 应该还是比较妙的 题意 给你一个树,然后多次询问 每次询问给出一堆节点,问你是否能找到一个从根出发的链,是的对于给出的每个节点,都能找出链上的点,是的他们的距 ...
- E. Tree Queries 解析(思維、LCA)
Codeforce 1328 E. Tree Queries 解析(思維.LCA) 今天我們來看看CF1328E 題目連結 題目 給你一棵樹,並且給你\(m\le2e5\)個詢問(包含\(k\)個點) ...
- CF-1328 E. Tree Queries
E. Tree Queries 题目链接 题意 给定一个树,每次询问一组点,问是否存在一条从根到某点的路径,使得该组点到该路径的最短距离不超过1 分析 从根到达某点的路径,如果覆盖到了某个点,那么一定 ...
- CF1254D Tree Queries(树链剖分)
出题人的做法是 \(O(n\sqrt{n\log n})\),结果这场结束后就被狂喷,一群人给出了 \(O(n\sqrt{n})\) 做法,甚至 \(O(n\log n)\) 都出来了-- 首先发现, ...
- Codeforces 960D Full Binary Tree Queries ( 思维 && 模拟 )
题意 : 给出一颗无限层的满二叉树,然后每个值为 X (根的 X 等于 1 ) 左孩子的值是 2*X,右孩子的值是 2*X+1 ,现在有两种操作,(1, x,k) 表示将 x 所在层的所有节点整体向右 ...
- CodeForces 825G"Tree Queries"(选根建树)
传送门 •参考资料 [1]:CodeForces 825G Educational Round #25 G :建树选根大法+O1大法+iostream解绑了还是慢 •题意 给定一颗包含 n 个节点的树 ...
- Codeforces 1606F - Tree Queries(虚树+树形 dp)
Codeforces 题面传送门 & 洛谷题面传送门 显然我们选择删除的点连同 \(u\) 会形成一个连通块,否则我们如果选择不删除不与 \(u\) 在同一连通块中的点,答案一定更优. 注意到 ...
随机推荐
- iptables一个包过滤防火墙实例
环境:redhat9 加载了string time等模块 eth0 接外网──ppp0 eth1 接内网──192.168.0.0/24 #!/bin/sh # modprobe ipt_MASQUE ...
- springmvc 多文件/文件夹上传 下载
注入依赖 <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding&g ...
- Python--day47--mysql执行计划
1,什么是mysql执行计划? 让mysql预估执行操作:在要执行的语句前面加explain,就不会真的执行sql语句,只是给出了要执行的数据的情况,如大约有多少条,查询类型.
- [全+转载] solaris 网络配置
===================== 较为重要的几个文件: /etc/nodename 主机名(即 hostname命令的输出) /etc/defaul ...
- Vue 父组件往子组件传递方法
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- java 使用反射调用方法
每个Method的对象对应一个具体的底层方法.获得Method对象后,程序可以使用Method里面的invoke方法来执行该底层方法. Object invoke(Object obj,Object ...
- H3C CIDR
- linux进程延迟
#include <linux/wait.h> long wait_event_interruptible_timeout(wait_queue_head_t *q, condition, ...
- The Preliminary Contest for ICPC Asia Nanjing 2019ICPC南京网络赛
B.super_log (欧拉降幂) •题意 定一个一个运算log*,迭代表达式为 给定一个a,b计算直到迭代结果>=b时,最小的x,输出对m取余后的值 •思路 $log*_{a}(1)=1+l ...
- dotnet core 隐藏控制台
如果写一个控制台程序,需要隐藏这个控制台程序,可以使用本文的方法 如果是在 Windows 下运行, 可以使用一些系统提供的方法隐藏控制台.如果是 Linux 下,都是控制台,就不用隐藏了 复制下面的 ...