20220310刷题笔记
H - Harder Satisfiability
2-sat 好题,主要思路是先按照 2-sat 的方式建边,要求没对都必须是 \(1\),注意到还有所有和存在的限制,对于这些限制,仔细研究后不难发现,当一个所有能走到另一个所有,并且一个所有和一个编号比起小的存在在一个 dcc 里面的时候,亦或者 2-sat 本来就无解的时候才会无解。利用 Tarjan 直接求解并多维护几个量就可以了。
最近代码的实现能力有所下降,需要注意要多思考,多写,少抄别人代码,但是看可以,一定要关上自己写一遍。
P1600
通过转化题意把题意变成求一个子树内有多少和 \(x\) 相等的点,然后我们可以直接开个桶来记录这个东西。
注意去重,需要去掉其他子树内的贡献以及我们路径到不了的点的贡献。
P2680
二分答案后相当于路径求教然后去最大值,所以我们直接用树上倍增做就可以,复杂度两个 $\log\(1\)
P4216
注意我们可以把单点加,链求和通过树上差分变成子树加,单点求和,然后通过dfs序映射到序列上变成区间加,单点求和,再次差分之后用树状数组来维护。