摘要:
XII.[ZJOI2012]网络 这题还以为有什么高端做法呢,一看$C\leq 10$,这题就算结束了。 它的那个限制翻译成人话就是“无论何时,任何颜色的边总是构成一条条链”。然后换颜色就暴力连边断边即可。 代码: #include<bits/stdc++.h> using namespace st 阅读全文
posted @ 2021-03-31 16:11
Troverld
阅读(49)
评论(0)
推荐(0)
摘要:
XI.[BJOI2014]大融合 终于来了……我们终于要用LCT来维护子树信息了。 因为我们看到,LCT是通过将原树拆成一堆链而起效的。在树链剖分中,我们通过dfs序来访问一棵子树;但是因为LCT的链是动态变化的,因此并没有一组固定的访问顺序。 那怎么办呢? 我们考虑最原始的想法:对于每个节点,再额 阅读全文
posted @ 2021-03-31 16:08
Troverld
阅读(84)
评论(0)
推荐(0)
摘要:
X.[WC2006]水管局长 或许我这题应该放到V.[NOI2014]魔法森林前面的QaQ? 这题首先一眼看出翻转加边顺序。然后,动态维护最小生成森林,这样保证最小生成森林上的路径上的最大值就是原图中路径的最大值的可能的最小值。反正随便写写就行了。 代码: #include<bits/stdc++. 阅读全文
posted @ 2021-03-31 16:06
Troverld
阅读(43)
评论(0)
推荐(0)
摘要:
IX.[BZOJ4998]星球联盟 这题就比较套路了(虽然我的程序还好好让我debug了一会),比上一题还要简单,直接暴力维护点双即可。 代码: #include<bits/stdc++.h> using namespace std; #define lson t[x].ch[0] #define 阅读全文
posted @ 2021-03-31 16:04
Troverld
阅读(92)
评论(0)
推荐(0)
摘要:
VIII.[BZOJ2959]长跑 我想把出这么毒瘤的题的人拖出来揍一顿 这题稍微想想,就是动态维护点双连通分量并缩点,然后在缩出来的树上求两点距离。 思想简单但代码极其复杂。 首先,我们可以使用冰茶姬维护点双,所有的点全都并到一个冰茶姬中,除了冰茶姬的象征节点,其它的点一律全都删去,不保留任何信息 阅读全文
posted @ 2021-03-31 16:02
Troverld
阅读(59)
评论(0)
推荐(0)
摘要:
VII.[SHOI2014]三叉神经树 LCT相较于树剖,最大的优势就是可以把一条链上的东西全整到一个splay里面,不像树剖在多个重链进行合并时会有很大麻烦。更好的是,LCT复杂度是$O(n\log n)$的,树剖不仅码量大,思路复杂,复杂度还是恶心的$O(n\log^2n)$。 这题就是典型的树 阅读全文
posted @ 2021-03-31 16:00
Troverld
阅读(114)
评论(0)
推荐(0)
摘要:
VI.[SDOI2011]染色 你们知道吗?LCT考的就两个,一个$pushup$,一个$pushdown$。 这里就是经典的维护颜色段。在每个节点,我们维护四个值:\(lc\),左端颜色;\(rc\):右端颜色;\(sc\):区间颜色段数;\(col\):当前点的颜色。 然后就是经典的老套路了。 阅读全文
posted @ 2021-03-31 15:58
Troverld
阅读(62)
评论(0)
推荐(0)
摘要:
V.[国家集训队]Tree II LCT维护这种东西是要比线段树要恶心的多的……毕竟线段树的区间大小是可以直接通过区间左右端点算出的,但是LCT就不行,必须手动维护。并且,线段树的维护是(左儿子+右儿子),但是LCT的维护是(左儿子+自己+右儿子)! 请务必先把线段树模板做掉,关于运算的优先级什么的 阅读全文
posted @ 2021-03-31 15:57
Troverld
阅读(65)
评论(0)
推荐(0)
摘要:
IV.[NOI2014]魔法森林 前三题都是模板,是为了让我们练手的。 这题才是真正的挑战。 首先,一看这题既不加边也不删边,甚至连树都不是,还是道静态题,并且长得还贼像最小生成树,我就纳闷了,这是LCT? 还真是。 我们可以将边按照$a$排序。之后,我们维护一个关于$b$权值的动态最小生成树。 具 阅读全文
posted @ 2021-03-31 15:55
Troverld
阅读(79)
评论(0)
推荐(0)
摘要:
III.[HNOI2010]弹飞绵羊 首先,可以发现,如果从一个装置的目标向这个装置连一条边,并且建立虚拟节点$n+1$,向所有可以弹飞的装置连边的话,这肯定构成一颗树。 理解就行。然后我们就可以在每个节点统计一个$size$,并用LCT在改变弹力系数时修改这棵树。则最终答案为: int ask(i 阅读全文
posted @ 2021-03-31 15:53
Troverld
阅读(59)
评论(0)
推荐(0)

浙公网安备 33010602011771号