最大线段覆盖问题

最大线段覆盖问题

给你一些线段和一个区间,找出一种选择方法,使得区间被覆盖的长度最大,且线段之间互不相交(或者端点处可以相交)。

千万不要用贪心!

这是背包DP问题,设状态f[i](如果只有一个区间),表示[1,i]的区间能被覆盖的长度的最大值,方程:

f[i]=max(f[i],f[Segment[j].l1]+Segment[j].w)(Segment[j].r<=i) f [ i ] = m a x ( f [ i ] , f [ S e g m e n t [ j ] . l − 1 ] + S e g m e n t [ j ] . w ) ( S e g m e n t [ j ] . r <= i )

一个区间一维,两个区间两维……

背包动规:以背包为状态,枚举每个物品;反过来也行。具体看题目。

例题:

NKOJ1066 饥饿的奶牛

NKOJ2915 出租

你可能感兴趣的:(有趣(,•,̀ω•́,)✧,动态规划与递推)