ARC104F Visibility Sequence
题意:对于序列
现在给定序列
- 提示:
- 先观察
,找出 的某些必要性质。 - 证明这性质是充分的(先不考虑
的限制,看是否对于每个满足性质的 都存在 满足 )。 - 检查反射,找出满足
的 的充要条件(上一步在构造 ,这一步是描述 的解集)。 - 考虑
的限制,构造判定 “是否存在 使得 ” 的算法。 - 根据上述判定算法设计 DP,进行计数。
- 先观察
Solution:
每个点要么无出边,要么恰有一条向前连的出边,图为内向树森林。
可以发现,
观察片刻,这性质应当很充分了。先不对
答案是肯定的。考虑赋值方案的必要条件:
- 对于节点
, 上一个兄弟 。
不难发现这也是充分的,而且符合条件的赋值方案必定存在。
接下来考虑
观察
观察前文的充要条件,一个
接下来考虑如何计数。
由于
边界:
枚举最后一棵树的编号区间
(特别地,规定
可以前缀和优化,复杂度