题解 ARC 112 E/F

随手把标题的 112 打成了 1123 。

E

考虑在最终数组里枚举一段上升的。求这一段并不移动,这一段左边的数的最后一次操作向左,这一段右边的数的最后一次操作向右,的方案数。

怎么处理 “最后一次操作”?

考虑 DP , \(f(i,j,k)\) 表示操作序列长度为 \(i\) ,其中有 \(j\) 个数最后一次操作向左, \(k\) 个数最后一次操作向右,方案数。

转移时向操作序列最前端加一个操作,可以保证刚才最后一次操作仍然是最后一次操作。

但这样 \(O(n^2 m)\) 过不去,优化一下状态,\(f(i,j)\) 表示操作序列长度为 \(i\) ,其中有 \(j\) 个数被操作过(“最后一次操作” 的方向没确定)。

  • \(f(i,j)\times 2j \to f(i+1,j)\) (操作序列最前端加一个操作,操作已经操作过的数,可向左,向右)
  • \(f(i,j) \to f(i+1,j+1)\) (弄一个新的数,“最后一次操作” 的方向没确定)

统计时乘上组合数,表示要决定一下“最后一次操作” 的方向。

Code

F

咕咕咕

$$\Huge \text{Goodbye OI}$$
原文地址:https://www.cnblogs.com/Rainbowsjy/p/14407713.html