2013年8月12日
摘要: 鸣谢: http://www.cppblog.com/y346491470/articles/152317.html【题意】:一个城市有n座建筑物,每个建筑物里面有一些人,为了在战争爆发时这些人都可以避难,城市里面建了m座避难所。每座避难所只能容纳有限人数。给出每个建筑物和避难所的坐标(题目要求距离为曼哈顿距离+1)。现在给你一种避难方案,问这种方案是否为最优方案,如果不是,请输出一种比当前更优的方案(不一定最优)。【题解】:好明显的费用流(距离看成费用),如果此题建费用流模型找最小费用流必定超时,而且题目不需要我们找到最优方案。定理:一个费用流是最小费用流的充要条件是这个费用流的残量网络没有 阅读全文
posted @ 2013-08-12 19:30 男神发量 阅读(403) 评论(0) 推荐(0) 编辑
摘要: 二分图的最小点权覆盖,选定点集,与该点集有关的边覆盖所有顶点,且该点集的点权值和最小。有类似于匈牙利算法一样的带权匹配算法,但是这里就不介绍了。个人比较推荐,用最大流算法更好理解,写起来更容易。题意:一个m X n的方阵,方阵格子中有老鼠屎,神枪手一枪能打掉一行或者一列上的所有赃物,让选定某些行和某些列,打掉所有赃物。已知条件: m、n,老鼠屎l粒,在每一行和列上布置神枪手的花费ci、cj,l粒老鼠屎的坐标。总费用为选定的行和列对应的花费值乘积,求最小总费用。第一步:化积为和,使用幂函数,最后得到结果时再还原!!!第二步:最大流算法求最小点权覆盖。先弱弱证明一下该算法。坐标为(i,j)的老鼠屎 阅读全文
posted @ 2013-08-12 13:20 男神发量 阅读(270) 评论(0) 推荐(0) 编辑