非常喜欢这道题. 点权转边权,这样每次在切断一个点的所有儿子的时候只断掉一条边即可. Code: #include <cstring> #include <cstdio> #include <algorithm> #include <string> #define setIO(s) freopen(s".in","r",stdin); #define maxn 100009 using namespace std; i…
用 set 维护子树信息,细节较多. Code: #include <cstring> #include <cstdio> #include <algorithm> #include <set> #include <string> #define setIO(s) freopen(s".in","r",stdin), freopen(s".out","w",stdou…
3637: Query on a tree VI Time Limit: 8 Sec  Memory Limit: 1024 MBSubmit: 206  Solved: 38[Submit][Status][Discuss] Description You are given a tree (an acyclic undirected connected graph) with n nodes. The tree nodes are numbered from 1 to n. Each nod…
偶然看见了这题,觉得自己 QTREE.COT 什么的都没有刷过的真是弱爆了…… 一道思路很巧妙的题,终于是在约大爷的耐心教导下会了,真是太感谢约大爷了. 这题显然是树链剖分,但是链上维护的东西很恶心.其核心思想是找到一个相连的最浅同色节点,那么我只要维护每个点的子树中与他相连的点的数量即可 用 f[c][u] 表示在 u 的子树中与 u 相连 (假设 u 无色) 且颜色为 c 的点数 查询直接算出与 u 相连的最浅同色节点 a,ans=f[c[u]][a] 考虑修改,我们发现每次 u 被反转,影…
\(\color{#0066ff}{ 题目描述 }\) 给你一棵n个点的树,编号1~n.每个点可以是黑色,可以是白色.初始时所有点都是黑色.下面有两种操作请你操作给我们看: 0 u:询问有多少个节点v满足路径u到v上所有节点(包括)都拥有相同的颜色 1 u:翻转u的颜色 \(\color{#0066ff}{输入格式}\) 一行一个整数n 接下来n-1行,每行两个整数表示一条边 接下来一行一个整数m表示操作次数 接下来m行,每行两个整数分别表示操作类型和被操作节点 \(\color{#0066ff…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3083 int 的范围是 2^31 - 1 ,所以权值是不是爆 int 了…… O( nlog2n ) 也能过? #include<cstdio> #include<cstring> #include<algorithm> #define ll long long #define ls Ls[cr] #define rs Rs[cr] using namespace…
QTREE6 - Query on a tree VI 题目描述 给你一棵\(n\)个点的树,编号\(1\)~\(n\).每个点可以是黑色,可以是白色.初始时所有点都是黑色.下面有两种操作请你操作给我们看: 0 u:询问有多少个节点v满足路径u到v上所有节点(包括)都拥有相同的颜色 1 u:翻转u的颜色 输入格式 一行一个整数\(n\) 接下来\(n-1\)行,每行两个整数表示一条边 接下来一行一个整数\(m\)表示操作次数 接下来\(m\)行,每行两个整数分别表示操作类型和被操作节点 输出格式…
可以作为 LCT 维护子树信息的模板,写的还是比较优美的. 本地可过,bzoj 时限太紧,一直 TLE #include<bits/stdc++.h> #define setIO(s) freopen(s".in","r",stdin) , freopen(s".out","w",stdout) #define maxn 100002 #define inf 100000000 #define isrt(x) (!…
考虑对于每一个点维护子树内与其连通的点的信息.为了换色需要,记录每个点黑白两种情况下子树内连通块的大小. 查询时,找到深度最浅的同色祖先即可,这可以比较简单的树剖+线段树乱搞一下(似乎就是qtree3),具体的,可以维护一下区间是否全黑/白,线段树上二分.换色会造成一个连通块分裂并产生新连通块,这只会影响到祖先节点的信息.同样树剖+线段树暴力改上去即可. 因为写的实在太丑没有一个oj能过,darkbzoj上42个点跑到第38个T掉了. #include<iostream> #include&l…
树上连通块 不用具体距离,只询问连通块大小或者最大权值 可以类比Qtree5的方法,但是记录东西很多,例如子树有无0/1颜色等 一个trick,两个LCT分离颜色 每个颜色在边上. 仅保留连通块顶部不是相同颜色,使得断边不会被菊花图卡掉 所以内部颜色不用考虑了,专心维护子树值. 查询时候findrt,splay,右儿子即可. Qtree6 #include<bits/stdc++.h> #define reg register int #define il inline #define fi…