一个粒子增加的强度总和为 。设 ,只需检查满足 的候选强度。粒子的峰值为 ,因此还必须满足 。
固定 ,从左到右扫描。扣除之前已经开始的三角形贡献后,当前位置的剩余值就等于从这里开始的三角形数量,因为三角形最左端的系数是 。如果需要负数个三角形,或者剩余空间不足 时仍需开始新的三角形,则不可行。
令 ,计算 。设 为从位置 开始的三角形数量,将左侧范围外的 视为 ,则可从左到右计算
检查 ,并在 时要求 。
设候选数量为 ,时间复杂度为 ,空间复杂度为 。子任务 1 可以检查所有 ,时间为 。子任务 2 可以不使用总和筛选,逐个检查所有强度,得到 解法。
证明
考虑最左侧尚未匹配的位置 。从更后面开始的三角形不会影响它。扣除此前三角形的贡献后,剩余部分只能由从 开始的三角形填满。由于首项系数为 ,数量被唯一确定。重复这个过程不会漏掉任何可行解。
三角形的二阶差分在起点为 ,在其后 个位置为 ,在其后 个位置为 ,所以递推式恰好计算出被强制的数量。如果所有数量非负且起点合法,那么每个完整三角形都在区间内。生成序列和目标序列具有相同的左侧边界值和二阶差分,因此每个位置都相等。
Solution written by GPT6