摘要:题意:n个点,给定每个点的层次,可以从当前层任何节点到达下一个层任何节点,x->x+1 ,x+1->x花费c,还有一些额外的边可以直接走。求1-n的最短路做法:想到了如果直接扩展所有节点的话肯定超时,所以找出关键点扩展就好了,什么关键点,叫着好听而已,就是那些必要的点而已,包括给出的边的点,还有起点终点,每层至少保证一个点。然后spfa迭代,按额外的边迭代,往上一层迭代,往下一层迭代。刚开始没能保证n点加进去,一直wa#define maxn 100005const int inf = 0x3fffffff;struct node{ int v,next; int w ;};nod
阅读全文
摘要:题意:给定无向图,每条边有权值,求该图的一个割集,是的该割集的平均边权最小Amber的《最小割模型在信息学竞赛中的应用》中讲的很清楚了。二分答案k,对每条边进行重新赋值为原边权-k,求最大流,可看这里:http://hi.baidu.com/buaa_babt/item/a08fbb45599dc722fb89602a二分枚举当前的平均边长l,对于边权l的将容量设为边权-l,加入到网络中,求出最小割的和sum,sum加上刚刚那些小于l的边(也是边权-l),如果大于0就意味着l不可作为最小平均边权,小于0就可以,当等于0时直接输出即可。一定要注意精度注意是无向图,还有就是求st割,求解答案。#d
阅读全文
摘要:http://poj.org/problem?id=3662题意:求一条从1到n 的路径,其中可以选择k条路免费,问该路径中出去k条之后最大的边长度是多少。比赛的时候想到了一个正确的算法:二分答案+DP判定,但是写挫了一个地方,二分写反了好几遍,最后也没过,回来把二分改了就过了,dp[i][j]表示到达i点经过了j条大于L的路得到的最小的最大值。特判了一下无解和0的情况还有就是直接dp求解也是可以的,直接把状态表示成dp[i][j]表示到达i点使用了j条免费的路的到的最小的最大值code1,这个写的好挫,还是两个人各写了一部分[code lang="cpp"]bool sp
阅读全文