Loading

ARC146D >=<(bfs,*)

ARC146D >=<

\(N\) 序列 \(A\) 数值范围 \([1, M]\)\(K\) 限制形如 \((P_i, X_i, Q_i, Y_i)\) 表示 \([A_{P_i} >=< X_i] = [A_{Q_i} >=< Y_i]\)。求最小的 \(A\) 的和。\(N, M, K \le 200000\)

CODE

这题如果出成程序填空题,放普及组,绝对人手一个满分。

\[[[A_{P_i} >=< X_i] = [A_{Q_i} >=< Y_i]] = [[A_{P_i} < X_i] = [A_{Q_i} < Y_i]] \land [[A_{P_i} < X_i + 1] = [A_{Q_i} < Y_i + 1]] \]

把每个限制像边一样加入一个点里面然后排序。刚开始所有 \(A_i = 1\),每当 \(A_i\) 大于 \(i\) 的未满足的条件里最小的 \(P_i\),就更新 \(A_{Q_i}\)\(\max(A_{Q_i}, Y_i)\)。过程可以用 bfs 实现。

题目难度产生于不同步骤之间的巧妙整合。

posted @ 2022-09-29 09:35  Pizza1123  阅读(78)  评论(0)    收藏  举报