额,最近几天没怎么写程序,关键数学初赛考萎了,以后要多做数学了。
这道题我叫了N遍,最后发现是由于他多组数据,l没有初始化。。。。
题目大意:
一个数轴上,有n条线段,每条的线段有a[i],b[i],w[i]表示起点终点和权值。让你选若干条线段让这些线段的和最大。数轴的某一段区间可以被重复选k次。
简略题解:
首先膜拜cai0715,看了他的构图方法才做出来的。
先离散化,就是先把所有线段的端点排序,然后再把原来的a[i],b[i]缩小成p,q,然后,增加源汇s,t,s=0 t=r+1(总区间长度+1)。然后对于数轴,i向i+1连边,费用0流量k。对于每条线段,从p向q连边,费用为-c[i],流量为1。
然后就是最小费用最大流了,最后ans取反就可以了。
附程序: