好题分享

2025.11.7 hkx

AGC024E

我们考虑加入一个元素的条件,注意到限制只与元素大小关系有关,于是我们考虑论讨加入元素与之前元素的大小关系。如果我们在一个位置加入一个比它大的数那么一定是可行的。如果我们加入了一个相同的数呢?因为我们比较的是字典序,所以我们会逐位比较直到不同。我们考虑把相同的数看成一段,我们比较下一段元素的大小即可判断。能够发现我们判断的时候与段的元素大小有关而与段长无关,所以我们可以把一次添加看成在每段最后一个位置加数,这样我们就只用考虑 \(a_i>a_{i+1}\) 的限制。特殊情况就是我们还能在序列最后加数。

现在我们考虑 dp,设 \(f_{i,j}\) 表示序列长 \(i\),可用值域大小为 \(j\) 的答案,为了方便我们考虑把加数倒过来变成删数。考虑转移,因为序列中最小的元素一定是从末尾删掉的,所以我们去关注最小值,转移考虑枚举最小值位置与被删除时间,但是考虑到有多个最小值所以我们只关注最左边的那个。于是就有:

\[f_{i,j}=\sum_{p=1}^i\sum_{t=i-p+1}^i{t-1\choose i-p}f_{p-1,j-1}\times f_{i-p,j} \]

简单解释一下,系数是因为最小值被删前它后面的 \(i-p\) 个数要在前面的 \(t-1\) 次操作中被删完,然后考虑左边的区间没有了当前的最小值,右边还可以有。注意到转移中的 \(\sum\limits_{t=i-p+1}^i{t-1\choose i-p}={i\choose i-p+1}\),并且其他部分与 \(t\) 无关,所以时间复杂度 \(\mathcal O(n^3)\)

2025.11.10 max

AGC072D

神秘构造题,skip。

posted @ 2025-11-09 20:48  Lyrella  阅读(12)  评论(0)    收藏  举报