ARC146D >=<(bfs,*)
\(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\)。
这题如果出成程序填空题,放普及组,绝对人手一个满分。
\[[[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 实现。
题目难度产生于不同步骤之间的巧妙整合。

浙公网安备 33010602011771号