由于剪切板被误删了,所以搬运比较合适的题解。
[ARC150F] Constant Sum Subsequence
总结:
- 判定条件严格时,考虑扩充条件
- 利用单调性和分治结构减小状态数
CF1523G Try Booking
总结:
- 区间不交可以考虑分治
CF1464F My Beautiful Madness
总结:
- 集合到集合 / 点的信息考虑找代表元
- 直径的封闭性
CF1017G The Tree
总结:
- 操作形式复杂可以使用贡献法
- 贡献满足可减性 - 逆操作
[AGC046D] Secret Passage
总结:
- 自由元延后决策(适用范围:)
- 不重不漏计数:双射
CF1446F Line Distance
总结:
- 考虑结构之间的投影(适用范围:)
CF1750F Majority
任意操作可以简化成每次选择一段形如 \(1...10...01...1\) 的合法子串。
一个串合法当且仅当它不存在一个无法消去的 \(0\) 段,但是如何计数?是否需要容斥?
实际上,我们可以考虑补集转化,计算不合法的串的数量,当且仅当每个 \(0\) 段的长度 \(>\) 两边 \(1\) 段的长度,这样记 \(f_{i,j}\) 表示总长为 \(i\),最后一段长度为 \(j\) 的不合法串方案,枚举下两段转移,同时维护一个斜对角线的前缀和来优化,时间复杂度 \(O(n^2)\)。
总结:
-
本题如果直接计算恰好有 \(0\) 个不合法段是困难的,这时候就可以利用对偶问题。
-
先找判断的简化条件,然后用简化后的限制计数。