摘要: 题意:有n个商店m个供应商k种商品给各商店的各种商品的需求量和各供应商的供应量以及供应商和商店之间的运输费用,求满足需求的最小费用题解:很裸。很裸。。每个商品做一次最大流,就是读入我看了半天才看懂。。英语弱啊。。。View Code 1 #include <iostream> 2 #include <cstring> 3 #include <cstdio> 4 #include <cstdlib> 5 #include <algorithm> 6 7 #define N 130 8 #define M 100100 9 10 usin 阅读全文
posted @ 2013-01-08 22:52 proverbs 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 题意:http://www.nocow.cn/index.php/Translate:Sgu/326题解:抑郁,机房的“学长”上课吵死了,心烦意乱的写了这个题,一直wa,最后发现忘了特判,网络流出现负权边了。。。明确思想,1这个人剩下的比赛都赢(包括和组外的人比的比赛,简称组外赛),与1同小组的其他人,组外赛全输,小组内部的比赛就是网络流需要分配的结果~思路见:http://www.cnblogs.com/proverbs/archive/2013/01/07/2850366.htmlView Code 1 #include <iostream> 2 #include <al 阅读全文
posted @ 2013-01-08 22:49 proverbs 阅读(310) 评论(0) 推荐(0) 编辑
摘要: 题意:FJ有n个农场,要从1号农场走到n号,再从n号走到1号(回来的路不能重复,不一定走完所有景点,只要求从1到n即可),给你一些景点之间的路的长度(双向),问你最短需要走多少路才能回来?题解:不同于双调旅行商问题(dp),因为距离不符合单调性。用最小费用流,还是很裸的~View Code 1 #include <cstdio> 2 #include <cstdlib> 3 #include <cstring> 4 #include <iostream> 5 6 #define N 1010 7 #define M 100100 8 9 usin 阅读全文
posted @ 2013-01-08 22:41 proverbs 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 题意:给出一些权已知的点(剩下的点的权未知),以及所有点之间的边的关系,每条边的权是其两端点的点权值的异或值,求未知点的权是什么的时候所有边权的和最小题解:amber的论文题,简直太绝了!http://kanboxshare.com/link/v0yHI2oUoSNMCo8mAmj1Bxy0mqMIH6tZNUsbGxG4mvu3FNl9FfiODWiEmdvTHKBRNUbpNxELmvNwA2rCFwu1DeAXb0I7HoBFNmIvNVIXmNYmFNl43dPYfIaGnVeFDB5XszPnT5jttcdCQ思想就是按位做32遍最小割。View Code 1 #include .. 阅读全文
posted @ 2013-01-08 22:36 proverbs 阅读(250) 评论(0) 推荐(0) 编辑
摘要: 题意:给出一个带权无向图,给出图中a,b两个点,已知切断一每条边都会产生与这条边权值相同的消耗,切断某些边可以使得a,b之间不连通,在已知一个切边方法消耗最小的方法,判断是否存在与此切割方法消耗相同的方法。题解:判断最小割的唯一性!就是老样子从S沿着非满流的正向边遍历点的总数k1,从T沿着非满流的正向边遍历的点的总数k2,若k1+k2=n(总点数)时最小割唯一。哎,成了结论了,不会证明。。后来又想怎么求最小割的总方案数,也不会。。求大神解释!View Code 1 #include <iostream> 2 #include <cstdlib> 3 #include & 阅读全文
posted @ 2013-01-08 22:27 proverbs 阅读(344) 评论(0) 推荐(0) 编辑
摘要: 题意:二维平面上有n个浮冰(用坐标表示浮冰位置),开始时每个浮冰上有一些企鹅,现在企鹅需要聚到某一个浮冰上,因此需要从一个浮冰跳到另一个浮冰上。浮冰比较特殊,每次企鹅跳离该浮冰时,由于反弹作用,浮冰会消融一部分,现在告诉,每块浮冰的坐标(xi,yi),每块浮冰最多可以被企鹅跳的次数(ni),每块浮冰上初始的企鹅数量(mi)以及企鹅可以跳跃的最大距离D。求这些企鹅最后可以在哪些浮冰上汇聚。输出可以汇聚的浮冰序号,下标从0..n-1,如果不能汇聚,输出-1。题解:枚举汇聚的那块浮冰为T,最大流求解。关键是怎样限制点的出度数(浮冰会融化!),以前好像谈到过,就是拆点。拆成2n个点(i和(i+n)对应 阅读全文
posted @ 2013-01-08 22:20 proverbs 阅读(287) 评论(0) 推荐(0) 编辑
摘要: 题意:N个点M条边的有向图,给出如下两种操作。删除点i的所有出边,代价是Ai。删除点j的所有入边,代价是Bj。求最后删除图中所有的边的最小代价。其实就是二分图最小点权覆盖。定义:从x或者y集合中选取一些点,使这些点覆盖所有的边,并且选出来的点的权值尽可能小。题解:拆点。n个点拆成2n个点(左右各n个,i与(i+n)对应,之间连容量INF的边),S和i连容量为Ai的边,(i+n)与T之间连容量为Bi的边,求最小割即可这样做为什么对呢?当一条边存在的条件就是网络中还存在从S到T的非满流边!方案输出不多说。。View Code 1 #include <cstdio> 2 #include 阅读全文
posted @ 2013-01-08 22:09 proverbs 阅读(257) 评论(0) 推荐(0) 编辑
摘要: 题意:有一些模块(modules)和一个双核处理器,一个模块可以在任意一个核上处理,每个核对应每个模块有个开销。现在有一些模块间需要数据交换,如果需要数据交换的模块在一个核上处理,则不需要额外开销,否则需要加上一个开销。现在需要完成所有模块,问最小需要多少开销。如果没有这个额外的开销,那么每个模块只要选择开销小的那个核就行了。额外的开销给选择加上了限制。题解:最小割模型。S和T分别表示两个核,每个模块和S,T连边求最小割就是了~View Code 1 #include <cstdio> 2 #include <cstdlib> 3 #include <cstrin 阅读全文
posted @ 2013-01-08 21:54 proverbs 阅读(456) 评论(0) 推荐(0) 编辑
摘要: 题意:火星人侵略地球,他们意图登陆破坏某个地区的兵器工厂。据探子回报,火星人登陆的地区为n*m大小的地域,而且每一个火星人的着陆点坐标已知。火星人很强悍,只要有一个火星人着陆后能够幸存,他必定能毁坏这片区域的全部兵工厂。为了防止这种情况发生,必须保证在火星人着陆的一瞬间把他们全部同时杀死。现在防卫队有一个激光枪,开一枪就能把 在同一行(或同一列)着陆的火星人全部杀死。但是这种激光枪的使用是有代价的,把这种激光枪安装到不同行的行首、或者不同列的列首,费用都不同。现在已知把激光枪安装到任意位置的费用,总的花费为这些安装了激光枪的行列花费的乘积。问怎样安装激光枪才能在杀死所有火星人的前提下费用最少? 阅读全文
posted @ 2013-01-08 21:46 proverbs 阅读(368) 评论(0) 推荐(0) 编辑
摘要: 题意:在一个网络里面,问增大哪条边的容量可以使整个网络的流量增大,输出这种边个数。题解:显然这些边是最小割边集的子集。对于边u-->v,当且仅当能从S沿着非满流的正向边遍历到u,从T沿着非满流的正向边遍历到v时,边u-->v是满足题意的边两遍dfs求解~View Code 1 #include <iostream> 2 #include <cstring> 3 #include <cstdio> 4 #include <cstdlib> 5 #include <algorithm> 6 7 #define N 1000 8 阅读全文
posted @ 2013-01-08 21:44 proverbs 阅读(290) 评论(0) 推荐(0) 编辑
摘要: 题意:有n个房间,要确保一个特定房间不能进坏人(初始有若干房间有坏人)。相邻的房间可能会有门,但是门上的锁是单向的(只能从一个房间打开进入另一个房间,a b ,只能从a进入b 不能从b 进入a),初始所有的锁都是开着的,问至少关上几个锁,才能不让坏人进入那个房间。题解:人不就相当于流么?!最小割~不想说建图了,唯一要注意的就是锁是单向的。对于a和b之间的门,若a有锁,b没有锁,那么连接a-->b容量INF(这个门锁了白锁,坏人自己能打开),b-->a容量1困了,今天不想写题了。。就只想了想怎么建图。。代码参考:http://blog.sina.com.cn/s/blog_6af66 阅读全文
posted @ 2013-01-08 00:12 proverbs 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 以前总结过无向图最小割的最大流算法,n^2的枚举起点和终点,这个题必然tle于是又学习了专门的算法:Stoer-Wagner算法就是利用prim求最大生成树,将最后扫到的两点合并,执行n-1次,最终合并成一个点参考资料:http://kanboxshare.com/link/gCrQIYPJvdwCxGlOUwU5U3yxNNIiW2cUxIhddx7T60uYmiiO2heSC1rULa5tjEbf3MLRsM8QRKYGzoZhd8abNaUkeView Code 1 #include <cstdio> 2 #include <cstring> 3 #include 阅读全文
posted @ 2013-01-08 00:01 proverbs 阅读(578) 评论(0) 推荐(0) 编辑