前言
\(\rm{T1}\) 没想到并查集实际上是糖了
但是差点完全想不到正解实际上是更糖的
其实我们只要在找性质的时候发现其不相关性即可
具体的, 只要你前面位置该占得占了即可
但是害怕害怕, 差点信心碎了满地, 害怕害怕
然后一个警示就是策略太复杂直接丢掉肯定假, 也就是换思路的必要性吧
从这上面看出来自己推确实好方法, 所以也没啥问题吧, 就是性质太复杂考虑换的事情
听讲听讲听讲听讲听讲
问问问问问问问问问问
推推推推推推推推推推
每日 \(\rm{C}\) 的时间必须要抽出来, 长下课就听音乐看 \(\rm{C}\) 得了, 一是可以休息, 二来也培养第一步找性质的能力
主要是本能不够, 找到的性质全他妈屁用没有, 练一下应该就好了
写了这么多, 还是先把这个题看一下
思路
不难发现只需要考虑不交的真前缀和真后缀之和不等
不妨设真前缀的和组成的集合为 \(\mathbb{P} = \{\textrm{pre}_1, \textrm{pre}_2, \textrm{pre}_3, \cdots, \textrm{pre}_{n - 1}\}\) , 对应的设真后缀的和组成的集合为 \(\mathbb{S} = \{\textrm{suf}_n, \textrm{suf}_{n - 1}, \textrm{suf}_{n - 2}, \cdots, \textrm{suf}_2\}\)
显然的, \(\mathbb{P}\), \(\mathbb{S}\) 中是单调递增的
如何判断这两个集合不重
不难发现因为单调性, 可以双指针维护
发现暴力的瓶颈其实在于没能在处理同时判定合法性, 以及没有利用到不相关性
考虑在 \(\rm{dp}\) 过程中就确保合法性
设 \(f_{l, r, k}\) 表示 \(\mathbb{P}\) 集合放到了第 \(l\) 个, \(\mathbb{S}\) 集合放到了第 \(r\) 个, 现在 \(\textrm{pre}_l - \textrm{suf}_{n - r + 1}\) 为 \(k\) 的方案数
然后只要当前 \(k = 0\) 了别想活着, \(l + r \leq n\) 是必须的
只要 \(k < 0\) , 当前就更新 \(r\) , 否则更新 \(l\)
复杂度在 \(\mathcal{O} (n^2m^2)\) , 可以通过前缀和优化做到 \(\mathcal{O} (n^2 m)\)
总结
这个真不太好想
做 \(\rm{dp}\) 题往往要找到
- 前后的无后效性\((\)不相关性\()\)
- 在处理同时判定合法性
一类计数 \(\rm{dp}\) 同时保证合法性的问题
\(\rm{dp}\) 刷表不好优化, 转化成递推之后再优化