【UR #26】石子合并

发布时间 2023-10-30 16:16:14作者: ydtz

喵喵题,要不是由于一些场外原因只想了半个小时的话应该是可以场切的!

首先不难发现,对于最终数组的前后两个数 \(x,y\),若 \(x>y\)\(y\)\(x\) 一定位于同一个初始数组内,否则一定是 \(y\)\(x\) 归并到了最终数组内,不合法。

于是我们可以从开头开始找到最终数组的不降子序列。剩下的数一定会作为该子序列内数的附庸存在,不对答案产生贡献。设该子序列为 \(S\)

剩下的可以归结为一个组合数问题,如果没有【数组非空】的限制,我们是可以随意扔数进数组中的,例如数 \(x\)\(S\) 中出现了 \(3\) 次,通过隔板法,我们便可以得出这部分方案数为 \(C_{n+2}^{n}\)

加上了该限制的话我们就可以考虑容斥,每次钦定 \(y\) 个数组为空。我们发现组合数式子的每一项是和出现次数相关的,而不同的出现次数最多有 \(O(\sqrt{n})\) 种,故对于每一种出现次数一起算一下,最终时间复杂度即为 \(O(n\sqrt n)\)

推充要简化问题。