加载中...

ABC 457 G (Dilworth定理)

G - Catch All Apples

要想让使用机器人的总数量最少,肯定要贪心地让可以由一个机器人完成的两个事件尽量分配给同一个机器人完成。

对于 \(\forall (T_{i}, S_{i}) \neq (T_{j}, S_{j})\),二者可以由同一个机器人完成,当且仅当:

\[|T_{j} - T_{i}| \ge |S_{j} - S_{i}| \]

钦定 \(T_{i} \le T_{j}\),则上面的条件成立,当且仅当下面的两个条件同时成立:

  • \(T_{j} + S_{j} \ge T_{i} + S_{i}\)
  • \(T_{j} - S_{j} \ge T_{i} - S_{i}\)

\((u_{i}, v_{i}) = (T_{i} + S_{i}, T_{i} - S_{i})\);则事件 \(i\) 与事件 \(j\) 可由同一个机器人完成(\(T_{i} \le T_{j}\)),当且仅当:\(u_{i} \le u_{j}\)\(v_{i} \le v_{j}\)

此时便形成了二元偏序关系,改造后的整个二元组序列 \((u_{i}, v_{i})\) 是一个偏序集。任意一个机器人可以同时完成某一条链内的任务,那么原问题(分配机器人的最小数量)便等价于求解最小链划分的大小;由 Dilworth 定理,即等价于求解最长反链长度。结合 LIS,将 \((u_{i}, v_{i})\) 按照 \(u_{i}\) 升序排序,问题便等价于求排序后 \(v_{i}\) 的最长严格下降子序列长度,可以用二分或树状数组 \(O(n\log n)\) 解决。

code

posted @ 2026-05-11 18:10  小橘奏  阅读(28)  评论(0)    收藏  举报