拆贡献:
- 数值贡献,所有值之和等于对于所有 i 求出 >=i 的个数求和(数值转 01)。
- 个体 -> 整体,一般可以考虑的有全局,操作,和操作所影响的更小的个体(或就是单独的个体)(这启示我们要多角度思考问题的本质)
大杂烩:
- Tree/Dag一般从顶端或底部考虑
- Floyd 类似的题,可以考虑是否满足矩阵乘法运算律
- 全排列且对整体考虑,可以思考相邻换位
- 一个点到树中最远点必是直径端点
- 最远互质点对 1e18 范围可以从大到小枚举长度,这样复杂度是对的
- 一个无向图所有环的公共节点至多 2 个。
- 维护 (a,b,c) 的信息可以换成 (a,b)+c 的信息看是否更好维护。
- 出现次数相关 -> 根分。
- 数颜色 -> 记录上一个以记录贡献(类似数点)。
- 删除 = 前缀拼后缀
- 若直接 dp or greedy 难,考虑反贪。
- X-=y 可以 -> X%=y?
- |a-b|=max(a-b,b-a)
- popcount(x xor y)=popcount(x)+popcount(y) mod 2
- 最大子段和性质:不存在一个前缀或一个后缀为负;不存在一个紧贴在其之前或紧贴在其之后的字段为正。
- 01 序列最长不下降子序列等价于将 0 变成 1,1 变成 -1,求新序列最大前缀和。
- C(n, m) mod 2 = 1 <=> m and n = m
- 对于令“所有数相等”一类的询问,考虑对依据题目给定的变换连边,则问题变成了求那几个数在树上的 lca。
- “总和” 不好求看看是否可以转成期望?例:AT_agc030_d
- 指向性(有传递关系),考虑建图。
- 全排列,要求一一对应,可以考虑转到图上。
- “数变换“ 是否可以变成树/图上问题?
- min(a,b)=(a+b-|a-b|)/2
max(a,b)=(a+b+|a-b|)/2
|a-b|=2max{a,b}-a-b - 如果答案具有类似循环节或周期的性质,可以对于每个循环节拿出来单独考虑最后再拼起来。
- 奇数个数的答案不好算可以偶数的答案再拼上一个。
- 平均数为 x,将所有数减 x,变为和为 0。
- min(max(a,b)) or max(min(a,b)),a=b 是取到。
- 乘法太大不好计算,考虑 log 一下。
- 点的运动 -> 加上时间轴变成折线。
- 最大子段和性质:不存在一个前缀或一个后缀为负;不存在一个紧贴在其之前或紧贴在其之后的字段为正。
- 形如 “不相等“ 的条件,可以转化为进制下的有位不同。
- gcd(a,b) 可以考虑的转换方式:狄利克雷卷积,枚举 gcd 拆贡献,gcd(a,b)=gcd(a,a+kb)。
- 处理类似与 “值域” 类 “相对” 问题时,可以考虑是否可以将整体的变化,转化为个体上的操作(映射到真正题目中的操作一般是通过操作其它个体实现相对而言的效果),从而简化问题,例:CF2007C。
- 扣掉几段等价于选出有限制的几段。
- 末尾段的长度类状态一般可以干掉
- 可以交换|ai-aj|<=k的(i,j),则i<j,|ai-aj|>k的(i,j)相对位置不变
- 排列题,若条件不好处理,是否可以考虑逆置换?
- 对于排列而言 mex(l,r)=min(mex(1,r),mex(l,n))