AT_arc168_d

wuhupai發表於2024-07-28

一眼區間dp。設計dp[l][r]為l-r間都被塗黑所用的最大值。考慮轉移,我們列舉中間沒被塗的點,這樣可以貪心一下,保證在左右儘可能大,的情況下中間能有線段覆蓋。所以轉移方程就是\(dp_{i,j}=dp_{i,k-1}+dp_{k+1,j}+have_{i,j,k}\)\(have_{i,j,k}\)就表示在i,j區間裡是否有跨越k的線段。這樣是不會算重的,因為\(i,k-1\)由i到k-1之間的線段來貢獻,另一邊同理。怎麼求\(have_{i,j,k}\)呢。我們再用一次區間dp就可以了。一開始的線段會對\(have_{i,j,i to j}\)有貢獻\(have_{i,j,k}|=have_{i+1,j,k}|have{i,j-1,k}\),然後就做完了。