加载中...

3.24 —— 927 F

927 F

限时每日一题day20。感觉应该自己能做出来的一道题,中途没忍住看题解了,遂以失败告终。

状态定义:\(dp[i]\):考虑前 \(i\) 个位置是否使用,可以覆盖的最大线段数量。

转移:决策是否使用位置 \(i\)
使用:\(dp[i - 1]\)
不使用:\(dp[L[i] - 1] + num[i])\)
二者取最大值转移给 \(dp[i]\)

  • \(L[i]\):所有覆盖位置 \(i\) 的线段中,最靠左的左端点位置
  • \(num[i]\):覆盖位置 \(i\) 的线段数量

\(num\) 数组可以直接差分计算;计算 \(L\) 可以将所有线段按照右端点升序排序,再用 \(multiset\) 动态维护包含位置 \(i\) 的所有线段中最靠左的左端点。具体细节见代码。

code

posted @ 2025-03-24 20:55  jxs123  阅读(6)  评论(0)    收藏  举报