像潮落潮涌,送我奔向自由。|

寂静的海底

园龄:3年2个月粉丝:59关注:15

2023-02-06 17:33阅读: 49评论: 0推荐: 0

【题解】 ARC146E Simple Speed

牛逼逼题。

首先发现序列的总长是非常大的,和矩阵快速幂之类的东西也没啥几把关系,肯定就不能从序列的角度进行 dp 了,于是从值域角度进行 dp 。

从小到大把每种数放进去。

自己想到了类似连续段 dp 的做法 , 但是不太会处理快速转移 , 想到了枚举新建的连续段的数量和合并的连续段的数量,也发现了两者的差是定值,但是完全没有想过不考虑合并这些操作,只是考虑插板的相对位置 。

fi 表示两个端点都没有被钦定,有恰好 i 个连续段的方案数。

gi 表示端点被钦定一个, 有恰好 i 个连续段的方案数。

hi 表示端点都被钦定了, 有恰好 i 个连续段的方案数。

有转移

f,g,h 表示新的 f,g,h

fAi=fi×(A1j)

gAi+1=fi×(A1j1)×2+gi×(A1j1)

hAi+2=fi×(A1j2)+gi×(A1j2)+hi×(A1j2)

波特们都说这题神仙在状态数是 O(n) 的,转移很简单。

我反而觉得状态数 O(n) 挺显然的 , 转移才是妙点。

就拿 ff 来举例子。

转移到的目标是 Ai 很好理解。

就是你得在每个原来的段两边都得有两个目前的数才行,这样你就有了 j 段 , 再把其它 n2j 个加进去就是 nj 段 ,这时候合并两个段就是拿一个中间的走 ,由于要把目前的数全部放完,就得新建一个段,所以总段数仍然是 nj

这个系数的来源是这样的。

考虑先放了 j+1 数进每个段的右边以及最左边段的左边 , 现在还剩 Aj1 个数 , 要把这些数插到 j 段形成的 n+1 个集合,所以方案数是 (A1j)

Q:为什么插板的组合意义和连续段是一一对应的?

A:现在的假设下,所有段都被合并成了一段,在最左、最右插数,实际意义是在最这里新建,在其它位置插板第一次是将这里“断开”成两个连续段 , 即选择不合并,后面再插板即是新建。

其它式子的组合意义类似。

Q:为啥显然 dp 的状态是 O(n) 的。

A:

考虑归纳

Si=AiSi1

对于每个时刻。

显然 f 的取值只有一种 Sigf 转移过来的值只有Si+1

假设以及证明了之前的取值只有 Si,Si+1

那么这一步也只会产生 Si,Si+1
最开始又只有 Si+1

h 的证明同理。

posted @   寂静的海底  阅读(49)  评论(0编辑  收藏  举报
历史上的今天:
2022-02-06 atcoder近期比赛记录
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起