多区间处理技巧(1)

给定 \(n\) 个区间 \([l_i,r_i]\),每个区间由一个价值 \(v_i\)

有若干次询问,每次询问给定一个区间 \([L,R]\),求能够将 \([L,R]\) 内所有点覆盖的最少代价。

具体的,选择 \(m\) 个区间,使得 \(\forall x\in[L,R]\),均 \(\exist i \in[1,n]\),满足 \(l_i\le x\)\(x \le r_i\)

暴力:考虑 DP,这里不讲。

一个小技巧,将问题进行图论建模

  • 对于区间 \(i\),从 \(l_i\)\(r_i\) 连边权为 \(v_i\) 的有向边。可以注意到,我们从 \(l_i\) 跑最短路到 \(r_i\),可以求出所选区间刚好首尾向连到最小代价。
  • 再把每个点 \(i\) ,连一条 \(i\rightarrow i-1\) 且边权为 $ 0 $ 的边,表示区间可以相互重叠(即可以回头找区间起点)。

每一次询问求一次最短路,时间复杂度为:\(O(qlogn)\)

posted @ 2026-09-06 17:01  Denia-kawaii  阅读(6)  评论(0)    收藏  举报