摘要: 给一个n个点,m条边的图,每条边上有费用,求1到n的路径中最长边最小值,其中可以选择k条边不计费用最大最小问题,看见就二分答案布尔数组 d[i,j]表示在第i点,选择j条边免费,且其余边中最大值小于二分值,的状态是否可以达到用SPFA扩展即可,最后在d[i,0..k]中只要有一个是TRUE,该二分值就成立由我的程序,可以延伸出两种优化算法1.可以把d[i,j]表示到i点用了j条免费边后起点到当前点的最大值,一边SPFA之后,d[n,0..k]中的最小值就是答案。2.二分答案,d[i]记录超过答案的边数,如果最终d[n]<=k,则合法View Code 1 program pku3662( 阅读全文
posted @ 2012-02-28 15:41 Codinginging 阅读(207) 评论(0) 推荐(0) 编辑
摘要: USACO月赛的银组题,dp性质比较明显,实现时有细节要注意用f[i,j]表示第i分钟跑,疲劳度为j时的最远距离 g[i,j]表示第i分钟休息,疲劳度为j时的最远距离有f[i,j]=max{f[i-1,j-1]+d[i] i>1 //上一秒跑 g[i-1,0]+d[i] j=1 //上一秒刚休息到疲劳为零} g[i,j]=max{g[i-1,j+1] j<m //上一秒休息 f[i-1,j+1] j<m //上一秒跑 g[i-1,0] j=0 //注意这个情况,体力为零时仍可以再休息}View Code 1 program pku3661(input,output); 2 v 阅读全文
posted @ 2012-02-28 15:31 Codinginging 阅读(265) 评论(0) 推荐(0) 编辑