trick
5k_sync_closer · · 个人记录
连通块数等于点数减边数
Trie 上两串的 LCP 等于它们的 LCA
在并查集上维护子树和,可以支持单点修改权值
光速幂可以只预处理一个
完全平方数,考虑唯一分解
一般情况下,高斯消元、矩阵求行列式消除第
但某些时候(如需要维护一些额外信息时)可以视为,通过一些交换操作,
将这一第
贪心策略不一定要直接求出最优方案,也可以求出一组合法方案后调整到最优方案。(3.30 T2)
如果需要对 01Trie 结构根号平衡,可以考虑
排列的逆序对数的奇偶性,与
每一类方案数的平方和 = 取出两个方案,且在同一类的方案数。
python 输出很长的 int 时,要加一句 sys.set_int_max_str_digits(1000000)
存在性二维数点不用真的二维数点,只需要在一维上维护另一维的最值。
暴算多个函数的卷积(多层枚举因数)比你想象的快。
cmath 里面 long double 系列函数比你想象的慢。
求
(
生成函数题,可以求导找递推式。(CSP 第四次)
枚举每类元素放几个,可以暴力做 MSET(CSP 第六次)
静态区间单调栈可以用倍增处理
计数所有元素都满足条件的方案数,可以看成恰有 0 个元素不满足条件的方案数,然后容斥
统计合法区间数,有的时候可以不统计区间,比如说可以统计有多少值域区间对应合法的区间
总长为
李超树加一维偏序(比如给
可以线段树维护凸包。
找两个点使得斜率最小:按
可以用 GF 加一维限制:比如要求选了 k 条关键边的生成树个数,
可以令关建边权值为
对每个点维护子树内部点对它的贡献和(类似 DSU on tree 干的事),如果贡献可差分的话,
可以 DFS 这个树,对每个点
则它子树内的点对它的贡献和就是 DFS 出
二分图最大权独立集可以转化成最大权闭合子图。
排列 DP,不仅可以每次插入一个最大值(
每次填入一个最大值(维护连续段),
还可以每次填入末尾的值,把之前大于等于其的值加一。
求一个区间使得价值最大,也可以考虑斜率优化/决策单调性优化。
区间最大前缀和/区间最大后缀和可以先求个全局前缀和/全局后缀和然后变成 RMQ。
长度为
如果可以写出 BFS 暴力,可以考虑 A*。
可以用线性筛预处理模非质数的逆元。
统计交换两个数使得满足一定条件的方案数,也要记得考虑分治。
要哈希的串值域很大的话,base 取大点就行了。
一切哈希都要记得用双模,双模比较困难的话 ull 自然溢出也行,能不取模最好。
字母括号匹配问题(CSP 消消乐),可以考虑矩阵哈希。
要优化
需要用点信息更新区间信息,或者区间信息更新点信息时,
如果用数据结构直接做比较困难,记得考虑数据结构优化建图。
建模题优化不动了,不妨换一种建模方法。
合并背包时如果不好卷积,可以考虑遍历其中一个背包的物品装进另一个(不一定需要启发式合并)。
整式递推,n 比 mod 大的话可以考虑找 f(n) 和 f(n+mod) 的关系。
线性 DP 比较困难的话,别忘了考虑区间 DP。
求一个式子 FWT 的结果,可以考虑直接代入定义式。
DP 答案很小时,别忘了考虑交换答案和状态。
【若干个不交简单环的并】与【所有简单环和非简单环】双射,
【所有简单环和非简单环】与【DFS 树上若干个返祖边形成的环的异或】双射。
不仅求最大解/最小解可以二分,求任意解也可以二分(每次确定其中一边一定有解)
一棵树至少有两个点权为 1 的点
在树上选出尽可能多条链/尽可能多个连通块,别忘了考虑从下往上贪心,能选了就选(CF1039D You Are Given a Tree)
给定
只有删除/增大某个数和求最小值两个操作的话,在桶上维护一个指针就行了。
在考虑怎么去掉一个信息之前,先考虑不去掉它会不会影响答案。
则
可以分析一些分治的复杂度,一般
BSGS 多组询问,竟然可以调块长平衡复杂度的,,,
冒泡排序,可以在
看起来不好解决的限制,不一定要转化成别的限制,也不一定要压进 DP 状态,可以考虑保证所有状态满足这个限制。12.24 T4
所有子树的 DFS 序区间不会部分相交
对于区间 DP 的决策单调性优化,一行/一列的决策点是有单调性的,可以二分队列来避免均摊复杂度
线段相交其实是一维偏序,只需要对每条线段找出其包含的所有左端点
容量上限为
字符集较大时建立 AC 自动机可以直接暴跳 fail 树,复杂度是
连通块无环:森林,连通块最多一个环:基环树森林,连通块内环不交:沙漠
基环树判断方法:定向后每个点出/入度都为 1
最小值最大/最大值最小不一定是二分
斜率相关可以想想 KTT,这玩意至少强于李超树
时刻记住
要判存在性,即使很好转计数,也先想想能不能不转计数
看起来规约 OV 的东西可以考虑 FWT
最优化也可以考虑转计数
扫描线题难以优化时,可以尝试把扫右端点改成扫左端点,或者反过来
看到曼哈顿距离/切比雪夫距离先想想能不能转成另一个