Loading

11.12 下午 T2 题解

考场上觉得人均 AB,然后上午砸了,就很慌。现在还是觉得上午很砸,仍很慌。

T3 暴力可过??

题意:给定 \(n\) 个格子,初始全为白色,一个人按顺序染黑一些格子,当一个格子左右的格子都被染黑后它立刻变黑,至全黑为止。求不同操作序列的个数。\(n \leq 400\)

它看着很 dp,但是一个格子左右的状态都会影响它啊,怎么 dp 呢?

立刻变黑这个是不是没用啊,它变黑了也不会去影响其它格子啊。

那变黑的格子是一段段,段与段间恰一个空格。那就没有后效性了,可以 dp 了!

段之内染色的方案数应当是一定的,合起来时相对顺序不会乱,那这就是 P5689 多叉堆

如果沿用 P5689 的方法,转移答案时还需要记录当前数字的个数。这个记一下分了几段就行了。

最后只剩段内染色的问题了。

明显每次新染的格子是原来一段格子的左边或右边,或者说所有时间只存在一个连通块。从 \(1\) 个格子拓展到 \(n\) 个格子,每次往左右端点拓展一下,总方案数是 \(2^{n-1}\)

综上,转移方程为:

\[dp_{i,j} \gets 2^{i-k-1} \cdot dp_{k,j-1} \cdot \binom{i-j}{i-k-1},k \in [0,i-2] \]

其中 \(dp_{i,j}\) 是前 \(i\) 数分 \(j\) 段的答案,\(k\) 是上一个选的数。这样做要把 \(dp_{0,0}\) 预设置为 \(1\)

复杂度 \(O(n^3)\),够了。

考了 8h 回家,实在没心情再写一遍代码了。

posted @ 2022-11-12 19:50  purplevine  阅读(26)  评论(0编辑  收藏  举报