AT_abc245_f

\(dp_i\) 表示从点 \(i\) 走是否能走到环。(因为题目是简单图,所以有拓扑序)

AT_abc247_e

可以发现在固定左端点时,区间长度越大,最大值越大,最小值越小。

首先我们先把 \(a_i < y\)\(a_i > x\) 的元素删掉,然后对剩下的元素分段。

对于第 \(i\)\([l, r]\) 我们枚举左端点 \(i\),找到第一个合法的右端点 \(R\),那么答案为 \(\sum r - R + 1\)

那么现在问题变成了如何判断一个区间合法,对于区间 \([i, j]\) 如果 \(a_i, a_{i + 1}, \dots a_j\) 之间是否存在元素 \(x\)\(y\),计算一个前缀和即可。

AT_abc248_d

\(V_j\)\(a_i = j\) 中所有的 \(j\),由于 \(a_i\) 最大为 \(2 \times 10^5\),所以可以使用 vector 加二分。

posted on 2024-01-02 15:11  appear  阅读(8)  评论(0)    收藏  举报