摘要: 题意简述:比较好理解,给定一个N*M的地图,地图上有若干个man和house,且man与house的数量一致。man每移动一格需花费$1(即单位费用=单位距离),一间house只能入住一个man。现在要求所有的man都入住house,求最小费用。(题意转自:http://blog.csdn.net/lyy289065406/article/details/6732762)思路:嗯,这个见图可以说没什么难度吧,明摆着怎么建图么。。需要注意的是,KM求的是最大权匹配,而题木要求是最小,这个好处理,把边的权值全部取相反数,然后做KM,最后把ans取相反数即可View Code 1 #include. 阅读全文
posted @ 2012-08-26 23:36 proverbs 阅读(460) 评论(0) 推荐(0) 编辑
摘要: 大致题意:有N个木桩,和M个木桩对之间的高度差(从x跳到y需要往上跳的高度)。从x跳跃到y的路径消耗的体力值是路径中的一个最大高度差。求一条消耗体力最小的路径。思路:-和POJ 1797类似,只是这道题的没有固定起点和终点,而是在询问中给出,询问还特别多,这个不用想,肯定要预处理出来答案的第一次floyd处理的是连通性,map[i][j]此时的含义是从i到j的最短路径长度第二次floyd处理的是两点间路径的最小的最大值,嗯,就是这样View Code 1 #include <cstdio> 2 #include <cstdlib> 3 #include <cstr 阅读全文
posted @ 2012-08-26 21:22 proverbs 阅读(431) 评论(0) 推荐(0) 编辑
摘要: 题目大意:求1到n的可行路径上最小值的最大值,也就是说从1到n的每一条可行路径上都有一条最小值,有多条路径的话就求这些最小值的最大值。思路:spfa的变种,将spfa中的dis[i]改为me[i], 代表从1到i的路径中最小边的最大值,提示到这里了,怎么更新就不在罗嗦了,有疑问就看代码吧!View Code 1 #include <cstdio> 2 #include <cstdlib> 3 #include <cstring> 4 #include <iostream> 5 #define N 1010 6 #define M 1001000 阅读全文
posted @ 2012-08-26 21:12 proverbs 阅读(335) 评论(0) 推荐(0) 编辑