带权区间调度

问题:有一组需求{1,...,n},每个需求i有一个开始结束时间s(i),f(i)对应,同时每个需求有一个权值vi,如果两个需求没有在时间上重叠,我们就说需求是相容的,求一个相容子集,使得权值之和最大化。

需要动态规划了:

首先按照结束时间f排序,升序,O(nlogn) 。

则递归解为:opt(i) = max(opt(p(i))+vi,opt(i-1)),O(n) 。

其中,p(i)是最右边的在i结束开始之前结束的需求j。

改天上代码。。。

猜你喜欢

转载自paramore.iteye.com/blog/1474594