[trick] [dp] CF1579G

posted on 2024-03-09 07:18:41 | under | source

尝试贪心,不可做。故考虑 \(\rm dp\)

注意到 \(a_i\le 1000\),应该是问题的突破口。

然后发现答案 \(\le 2*\max a_i\),因为当区间长度取 \(2*\max a_i\) 时,无论当前位于区间的哪个位置,都存在一个方向可以放下一条大小 \(\le 1000\) 的线段。

所以定义状态 \(f_{i,j}\) 表示前 \(i\) 条线段,当前位于区间从左往右第 \(j\) 个点时,最小覆盖长度。并且规定 \(j\le 2000\)

转移时注意:如果新放入的线段超出原区间左端点,则认为当前位于第 \(0\) 个点。

复杂度 \(O(\max a_i \times\sum n)\),注意滚动数组优化下空间。

posted @ 2026-01-12 20:06  Zwi  阅读(1)  评论(0)    收藏  举报