ABC335E 题解

发布时间 2024-01-07 00:22:14作者: Manipula

闲话:

赛时想了半天都没有想出来,赛后看了一下非递减才想出来

题意

我们要求一个从 \(1\)\(n\) 的路径,这个路径上点的点权组合成一个数列,这个数列得是非递减的,求这个数列不同整数个数。

分析

很明显,我们要求出一个非递减的路径,那么舍弃掉 \(a_u > a_v\) 的边,因为这些边对答案没有任何贡献。

再看题目,发现我们要求出不同数的个数,因为有 \(a_u = a_v\) 的边,考虑缩点, 将 \(a_u = a_v\) 的边缩成一个点,这一点内包含的所有点的点权都相同。

缩点完整张图就变为 DAG,直接跑一个 DAGdp 就行了,时间复杂度是 \(O(n + m)\) 的。

注意舍弃 \(a_u > a_v\) 的边是在缩点完再舍弃啊!!

AC 记录