第一问直接跑最大流即可。建图的时候按照费用流建,费用为0. 对于第二问,在第一问dinic剩下的残量网络上建图,对原图的每条边(i,j),建(i,j,inf,cij),表示可以用c的花费增广这条路。然后从新建一个源点,连(s,1,k,0)表示要增加k的流量。跑最小费用最大流即可。 ...
分类:
Web程序 时间:
2018-02-12 15:21:00
阅读次数:
211
神奇的建图:连接(s,1,inf,0)(n+1,t,inf,0),对于1~n连接(i,i+1,inf a[i],0),对于每个志愿者(s,t,c),连接(s,t+1,inf,c)。 因为从s开始的流是inf的,到t的也是inf,但是每个点的流量少它所需要的志愿者数量那么多,所以少的流量需要用带权的志 ...
分类:
其他好文 时间:
2018-02-12 11:16:36
阅读次数:
158
一开始从客人角度想的,怎么建都不对 从一个修车工所接待的所有顾客花费的总时间来看,设一共有x个人,那么第一个修的对总时间的贡献是x\ w1,第二个是(x 1)\ w2…以此类推。所以把第i个修车工拆成n组m个,第j组表示i修车工修第j个顾客的车,第j组第k个表示i修车工修第(n k+1)个修第j个顾 ...
分类:
其他好文 时间:
2018-02-11 22:36:25
阅读次数:
166
其实KM更快……但是这道题不卡,所以用了简单粗暴的费用流,建图非常简单,s向所有人连流量为1费用为0的边来限制流量,所有工作向t连流量为1费用为0的边,然后对应的人和工作连(i,j,1,cij),跑一遍最小费用最大流再跑一遍最大费用最大流即可。方便起见直接重建图了。 cpp include incl ...
分类:
其他好文 时间:
2018-02-11 14:53:05
阅读次数:
166
s向仓库i连ins(s,i,a[i],0),商店向t连ins(i+m,t,b[i],0),商店和仓库之间连ins(i,j+m,inf,c[i][j])。建两次图分别跑最小费用最大流和最大费用最大流即可。 cpp include include include include using namesp ...
分类:
其他好文 时间:
2018-02-11 14:26:27
阅读次数:
119
分层图,建k层,设(i,j,0)为点(i,j)的满油状态,全图的流量都是1,因为重复走到一个点没有意义。如果当前点是加油站,那么它向它上左的点连费用为a的边,向下右连费用为a+b的边; 否则,这个点的所有层向零层连费用为a+c的边表示建加油站和加油,其他的当前点是加油站的情况连即可,但是不用加a。然 ...
分类:
其他好文 时间:
2018-02-10 19:27:10
阅读次数:
190
对于ai==0连接(i,t,1,0),对于ai 1(s,i,ai 1,0),然后对以相邻的两个点(i,j)连接(i,j,inf,1),注意这里是一个环的形式,所以1和n+1相连 ...
分类:
其他好文 时间:
2018-02-04 22:38:09
阅读次数:
141
其实是水题只不过在noip前一个月时我问整个机房也没人能回答上来。 现在可以随随便便切过去了也是很爽的。 最小费用最大流,按题目要求建图即可。 ...
分类:
其他好文 时间:
2018-02-04 16:41:54
阅读次数:
117
题意 在一个有向图当中,现在每一条边带有一个容量,现在有K个人在起点,需要到终点去吃饭,询问这K个人最后一个人到达食堂的最小时间是多少 贴一篇题解: "http://blog.csdn.net/u013761036/article/details/38268335" 代码 cpp include d ...
分类:
其他好文 时间:
2018-02-01 20:41:32
阅读次数:
115