一些解题思路
非子树异或最大值
(TDOG CSP模拟 Day1T4)
题意:给一棵有根树,每个点有点权。对于每个点,求不在该点子树内的任意两点异或最大值。
思路:考虑无子树限制的异或最大值,设这一对点分别为$x,y$。
这个值可以贡献的点是除了$x,y$到根的路径上的点之外所有的点。对于$x,y$到根的路径上的点可以暴力01trie。时空复杂度$O(n\log S)$
序列背包
(洛谷P5391 [Cnoi2019]青染之心)
题意:对一个可在末尾增加/删除的序列做完全背包,每个操作后都要输出
思路:操作序列可以视为一棵操作树,则问题转化为树上背包。
对操作树进行重链剖分,记录每条重链的背包,轻链直接dfs
具体实现方法为:先遍历一个点的每一个轻儿子,对每个轻儿子都新开一个数组存dp状态
然后再dfs该点重儿子,沿用该点的dp状态数组即可
由于每个点到根上的重链、轻链数不超过$\log n$,所以空间$O(V\log q)$,时间$O(Vq)$
枚举三元环
题意:给定$n$个点,$m$条边的无向图,枚举其所有三元环
思路:从度数小的点向度数大的点连边,枚举一点两边即可 证明
二维曼哈顿距离与切比雪夫距离的转换
距离一个点曼哈顿距离为定值的点组成一个菱形,不方便处理,可以将其转化成切比雪夫距离,使其变为一个正方形,便于处理,反之同理
来源:洛谷日报
数学公式转化为树上问题
可反悔贪心
区间计数
(CF1609F Interesting Sections)
思路:发现符合条件的区间是连续的,把区间放到二维平面上,区间$[l,r]$对应点$(x,y)$,进行二维数点
特殊条件下快速求组合数
这玩意……tmd想不到啊
思路:众所周知,$C(n,m)=\dfrac{n!}{m!(n-m)!}$