POJ 3680

建图很巧妙

先离散化区间端点。从0->1,1->2,~~~~~n->n+1每条边容量为k,费用为0,

对于每条线段,他的两个端点连边容量为1,费用-w

然后跑一遍最小费用流

算法正确性证明:

如果两个区间没有交集,那么代表它们的边可以出现在同一增广路上,这一点显然。否则,它们就在不同的增广路上。每一个区间对应的边的容量都是1,这样,最后的流量就是被选出的两两有交集的区间的数量。受到(0,1,k,0)这条边的容量限制,这个值刚好不大于k.区间的权都是正的,因此选取的区间多多益善,所以流量必然最大。

 (对于每次选取的增广路中总存在一个区间,在每次增广所得区间都与这个区间有交集)


 

慎用STL,我T了


 

posted on 2012-03-21 18:11  c语言源码  阅读(181)  评论(0编辑  收藏  举报

导航