题意翻译 一棵树,每个点初始有个点权和颜色(输入会给你) 0 u:询问所有u,v路径上的最大点权,要满足u,v路径上所有点颜色相同 1 u:反转u的颜色 2 u w:把u的点权改成w 题解 Qtree6的升级版,建议先做完再来做这题(毕竟那个代码改一改就能做这个了两倍经验岂不美哉)(Qtree6我的题解->这里) 我就当你们已经都会Qtree6了(小声) 就是把Qtree6中维护连通块中点的个数,变成维护子树中的最大值就行了 实子树的max直接用,虚子树的max可以直接丢进一个set里 然后就是…
洛谷题目传送门 思路分析 维护子树最值还是第一次写QwQ 因为子树的最值会变化,所以不能简单地把最值记下来,还要维护一个平衡树,把每个子树的最大值扔进去,来资磁插入.删除和查询最值. 然后我就懒得手写了,毕竟Splay作为平衡树时与LCT中的Splay写法不一样,不能混用. 于是要去学习STL啦 非常感谢Kelin巨佬的代码,我终于初步掌握了一下set的用法 (比如说知道了multiset的erase某值是把所有等于该值的节点删除......) (还比如说知道了rbegin和end的区别....…
题意翻译 题目描述 给你一棵n个点的树,编号1~n.每个点可以是黑色,可以是白色.初始时所有点都是黑色.下面有两种操作请你操作给我们看: 0 u:询问有多少个节点v满足路径u到v上所有节点(包括)都拥有相同的颜色 1 u:翻转u的颜色 输入格式 一行一个整数n 接下来n-1行,每行两个整数表示一条边 接下来一行一个整数m表示操作次数 接下来m行,每行两个整数分别表示操作类型和被操作节点 输出格式 对每个询问操作输出相应的结果 题解 简单来说,就是维护同色联通块的大小 干脆直接暴力linkcut好…
Description 一棵树,每个点初始有个点权和颜色(0/1) 0 u :询问所有u,v 路径上的最大点权,要满足u,v 路径上所有点的颜色都相同 1 u :反转u 的颜色 2 u w :把u 的点权改成w Solution 对于每一种颜色,我们开一个 \(LCT\) 来维护 首先为了使得 \(LCT\) 维护的黑树连通,难免会有白点,但是最多只会有一个,因为一旦不连通了就没有必要维护了,对于白树也是同理 对于每一个 \(LCT\) 的节点,只需要维护一个 \(splay\) 中的子树 \(…
题意翻译 你被给定一棵n个点的树,点从1到n编号.每个点可能有两种颜色:黑或白.我们定义dist(a,b)为点a至点b路径上的边个数. 一开始所有的点都是黑色的. 要求作以下操作: 0 i 将点i的颜色反转(黑变白,白变黑) 1 v 询问dist(u,v)的最小值.u点必须为白色(u与v可以相同),显然如果v是白点,查询得到的值一定是0. 特别地,如果作'1'操作时树上没有白点,输出-1. 题解 是QTREE4的弱化版诶…… 具体的思路可以看看Qtree4的->这里 注意把求最大改成求最小,还有…
题意翻译 你被给定一棵n个点的带边权的树(边权可以为负),点从1到n编号.每个点可能有两种颜色:黑或白.我们定义dist(a,b)为点a至点b路径上的权值之和. 一开始所有的点都是白色的. 要求作以下操作: C a 将点a的颜色反转(黑变白,白变黑) A 询问dist(a,b)的最大值.a,b点都必须为白色(a与b可以相同),显然如果树上仍存在白点,查询得到的值一定是个非负数. 特别地,如果作'A'操作时树上没有白点,输出"They have disappeared.". 题解 一道神…
传送门 跟QTREE6QTREE6QTREE6神似,改成了求连通块里的最大值. 于是我们对每条链开一个heapheapheap维护一下即可. MDMDMD终于1A1A1A链分治了. 代码: #include<bits/stdc++.h> #define ri register int #define fi first #define se second using namespace std; inline int read(){ int ans=0; bool w=1; char ch=ge…
You are given a tree (an undirected acyclic connected graph) with N nodes, and edges numbered 1, 2, 3...N-1. Each edge has an integer value assigned to it, representing its length. We will ask you to perfrom some instructions of the following form: D…
洛谷题目传送门 思路分析 题意就是要维护同色连通块大小.要用LCT维护子树大小就不说了,可以看看蒟蒻的LCT总结. 至于连通块如何维护,首先肯定可以想到一个很naive的做法:直接维护同色连通块,每次更改时暴力修改父边和子边...... 来个菊花图吧!(话说我真的好弱,前几天ZJOI的时候才知道对于某点度数很大的树/图有这样的称呼,真是很形象哈23333) 既然这条路行不通,那就换一种模型吧. 这是一种高级的维护染色连通块的较为通用的模型. 感觉蒟蒻对这种模型的理解与许多巨佬有不一样的地方,在这…
P1501 [国家集训队]Tree II 看着维护吧2333333 操作和维护区间加.乘线段树挺像的 进行修改操作时不要忘记吧每个点的点权$v[i]$也处理掉 还有就是$51061^2=2607225721>2147483647$ 所以要开unsigned int #include<iostream> #include<cstdio> #include<cstring> #define rint register int #define di unsigned i…