摘要:
题目链接:hdu 5002 Tree 题意: 给你一棵树,每个节点有个权值。 现在有四种操作 1. 删一条边加一条边,保证操作后还是一棵树。 2. 将一条链的节点的权值设为x. 3. 将一条链的节点的权值加上x. 4. 询问一条链的第二大权值,并且输出有多少个。 题解: 很裸的LCT,维护一下就行了 阅读全文
摘要:
题目链接:Wannafly挑战赛1 C MMSet2 题意: 中文不解释。 题解: 比赛的时候是用的lca+贪心。 今天学了学虚树,这题实际就是求一个虚树的直径。 1 #include<bits/stdc++.h> 2 #define F(i,a,b) for(int i=(a);i<=(b);++ 阅读全文
摘要:
题目链接:hdu 5398 GCD Tree 题意: 给你一个n,让你输出一个最大生成树的价值。 有n个点,任意两点有条边,边权为gcd(u,v)。 题解: 由于题意要让你输出所有的1e5内所有的n,所以只能动态维护最大生成树。(LCT可以做到) 显然可能有用的边只能是x向x的因子连的边。 LCT如 阅读全文
摘要:
题目链接:hdu 5967 小R与手机 题意: 有n个手机,每个手机有一个呼叫转移。如果形成了环就不能接通。 现在有两个操作: 1 询问打电话x,最终接到的是那个电话,如果有环,输出-1 2 将x的呼叫转移改为y 题解: 用LCT来维护这个森林的关系。 显然要形成环的话,肯定是树跟连向了该树内的点。 阅读全文
摘要:
题目链接:BZOJ 2243: [SDOI2011]染色 题意: 给你一棵树,每个点有个颜色,有两个操作。 1 询问一条路径有多少段颜色。 2 将一条路径全部染成一个颜色。 题解: 这题可以用树剖+线段树维护。 但是LCT超级好写。 要注意的就是rev那里要把左右颜色也要换一换。 1 #includ 阅读全文
摘要:
题目链接:SPOJ - OTOCI 题意: 给你n个点,有三种操作。 1 将 x y 连接 如果已经连接了,就输出no,否则输出yes 2 将x的权值改为y 3 输出x到y的路径经过的所有点的权值。 题解: LCT的题,很裸。 1 #include<bits/stdc++.h> 2 #define 阅读全文
摘要:
题目链接:BZOJ 2002: [Hnoi2010]Bounce 弹飞绵羊 题意: 有n个节点,每个节点有个弹力系数xi,表示第i个节点可以弹到i+xi,如果超过了n就弹飞。 现在有两个操作: 1 x 询问从x开始要弹几次才能弹飞。 2 x y 将x的弹力系数更改为y。 题解: 这题可以分块可以LC 阅读全文
摘要:
题目链接:BZOJ 2049: [Sdoi2008]Cave 洞穴勘测 题意: 三个操作. 1 链接x y 2 断开x y 3 询问x y是否连通 题解: LCT裸题 1 #include<bits/stdc++.h> 2 #define F(i,a,b) for(int i=a;i<=b;i++) 阅读全文
摘要:
题目链接:hdu 4010 Query on The Trees 题意: 给你一棵树,有4种操作。 1 连接x,y. 2 断开x,y. 3 将x到y这条路径加上一个值w. 4 询问x到y这条路径的最大值. 题解: LCT必做题,全是LCT操作。 1 #include<bits/stdc++.h> 2 阅读全文
摘要:
题目链接:hdu 6203 ping ping ping 题意: 给你一棵n+1个节点树,现在有q条路径不通,问你最少有多少个节点坏掉了。 题解: 考虑贪心,对这q条路径求一下lca,按照lca的深度从大到小排序。 然后for每条路径,看看x或者y是否在已经被禁止的子树里面,如果都不在,那么ans+ 阅读全文