【题解】 ARC146E Simple Speed
牛逼逼题。
首先发现序列的总长是非常大的,和矩阵快速幂之类的东西也没啥几把关系,肯定就不能从序列的角度进行 dp 了,于是从值域角度进行 dp 。
从小到大把每种数放进去。
自己想到了类似连续段 dp 的做法 , 但是不太会处理快速转移 , 想到了枚举新建的连续段的数量和合并的连续段的数量,也发现了两者的差是定值,但是完全没有想过不考虑合并这些操作,只是考虑插板的相对位置 。
表示两个端点都没有被钦定,有恰好 个连续段的方案数。
表示端点被钦定一个, 有恰好 个连续段的方案数。
表示端点都被钦定了, 有恰好 个连续段的方案数。
有转移
表示新的
波特们都说这题神仙在状态数是 的,转移很简单。
我反而觉得状态数 挺显然的 , 转移才是妙点。
就拿 来举例子。
转移到的目标是 很好理解。
就是你得在每个原来的段两边都得有两个目前的数才行,这样你就有了 段 , 再把其它 个加进去就是 段 ,这时候合并两个段就是拿一个中间的走 ,由于要把目前的数全部放完,就得新建一个段,所以总段数仍然是 。
这个系数的来源是这样的。
考虑先放了 数进每个段的右边以及最左边段的左边 , 现在还剩 个数 , 要把这些数插到 段形成的 个集合,所以方案数是 。
Q:为什么插板的组合意义和连续段是一一对应的?
A:现在的假设下,所有段都被合并成了一段,在最左、最右插数,实际意义是在最这里新建,在其它位置插板第一次是将这里“断开”成两个连续段 , 即选择不合并,后面再插板即是新建。
其它式子的组合意义类似。
Q:为啥显然 dp 的状态是 的。
A:
考虑归纳
令 ,
对于每个时刻。
显然 的取值只有一种 , 从 转移过来的值只有 。
假设以及证明了之前的取值只有
那么这一步也只会产生 ,
最开始又只有 。
对 的证明同理。
本文已经结束了。本文作者:ღꦿ࿐(DeepSea),转载请注明原文链接:https://www.cnblogs.com/Dreamerkk/p/17096138.html,谢谢你的阅读或转载!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
2022-02-06 atcoder近期比赛记录