题目大意:给出一些作物,这些作物要不就是种在A地,要不就是种在B地,有些作物种在一起会有额外收成。问最多可以获得多少收成。
思路:最小割模型,与S集相连的点都是种在A地的点,与T集相连的点都是种在B地的点。中间随便乱搞一下,总之最后就是所有收成-最大流就是最后答案。
CODE:
#include
#include
#include
#include
#includ...
分类:
其他好文 时间:
2015-01-13 17:50:17
阅读次数:
213
最小割心得:
首先需要一定的功底来发现这道题是最小割,并且投入思考。
然后想怎么建图:
最小割都是先算上所有收益,然后再通过网络图进行割边减去部分权值。
收益有时候可能带上负值。
然后我们需要思考什么能带来权值,什么会有权值冲突。
而最小割图一般都是拆成S集和T集考虑,即取与不取,某人/点选A或者选B等等,
这样就会带来冲突,也就是需要割的边。
然后我们需要把所有权值的得与失列出来...
分类:
其他好文 时间:
2015-01-13 09:04:29
阅读次数:
180
模型要点:1.一般适用于二取一问题或者01规划。2.利用最小割=最大流,转化为最大流求之。建议阅读胡伯涛的论文 >,有精彩有序的证明和各种模型。相关题目:1.太空飞行计划(网络流24题)题目大意:有一些实验和仪器,做每个实验有相应的报酬,但是需要买好相应的仪器(多个实验可以共用),仪器需要相应的钱....
分类:
其他好文 时间:
2015-01-11 15:59:00
阅读次数:
146
那个一看就觉得不是费用流就是最小割。
想想就确定最小割了。
考虑到一个人,文理不可兼得,不妨先建点,然后向源点(文科),汇点(理科)连边,流量(也就是割)是对应喜悦值。(这里的想法是先建个差不多的,有漏洞再拆点啊,建辅助点啊什么的)
然后再考虑一对朋友之间的共文理喜悦值:
如果都选文,那么需要割掉双方都选理的喜悦值,
如果都选理,那么需要割掉双方都选文的喜...
分类:
移动开发 时间:
2015-01-11 13:38:50
阅读次数:
955
题目大意:给定n个人,每个人有一个佣金,i和j如果同时被雇佣会产生2*E(i,j)的效益,i和j如果一个被雇佣一个不被雇佣会产生E(i,j)的亏损,求最大收益
首先对于每一个cost[i],从点i出发向汇点连一条流量为cost[i]的边
对于每一对点(i,j),建图如下:
从S向点i和点j各连一条流量为E(i,j)的边
i和j之间连一条流量为2*E(i,j)的双向边
这样可以保证每种割法...
分类:
其他好文 时间:
2015-01-11 12:28:43
阅读次数:
159
题目大意:给定一个座位图,相邻两人之间是朋友,每个人选择学文或学理会有相应的喜悦值,一对朋友同时选择学文/学理也会有相应的喜悦值,求喜悦值之和最大的方案
这个题的模型显然是最小割- -
看到矩阵上相邻点之间的关系 很容易想到黑白染色 随后就能想到将某种颜色的点源汇对调
但是很可惜我没建出图来- - 自己YY了一种做法 但是喜闻乐见地发现建图方法不对- -
还是OTZ HZWER一下吧- -...
分类:
移动开发 时间:
2015-01-11 11:02:49
阅读次数:
233
题目大意:给出一个无向图,问从1到n的最短路发生变化需要割掉最少花费的边权总值是多少。
思路:先要把所有最短路上的边搞出来,一个Floyd就可以解决,然后把所有在最短路上的边都加到最大流的图中,然后跑最小割就是答案。
CODE:
#include
#include
#include
#include
#include
#define MAX 510
#def...
分类:
其他好文 时间:
2015-01-11 09:45:29
阅读次数:
232
题解:
首先那个裸的单源最短路过程就过了吧。
然后说转的最小割。
就是我们考虑到从源点到汇点有多条最短路,我们需要切断一些边,使得所有的最短路都被切断。
首先这是个很裸的模型,切断?最小割!
如果你想不到,那不妨这么想:
我们切断所有最短路,那么每条最短路都有一个路径,上面有若干条边,那么我们需要至少切断其中的一部分。
而所有的局部最短路都满足一个性质:
就是从源点...
分类:
其他好文 时间:
2015-01-11 09:43:43
阅读次数:
130
题目大意:给出一个三维的点阵,没个点都有可能被切割,代价就是这个点的权值。相邻的切割点的高度差不能超过D,问最小的花费使得上下分开。
思路:很裸的最小割模型,很神的建图。
S->第一层的点,f:INF
所有点->它下面的点,f:INF
一个点的入->一个点的出,f:val[i]
(i,j,k) - > (i - d,j,k),f:INF
最下面一层的点->T:f:INF
然后...
分类:
其他好文 时间:
2015-01-09 21:03:34
阅读次数:
234
题目大意:。。。自己看
从源点出发,分别向汇点连两条流量为a和b的边,跑最大流即是a+b。
代码:
#include
#include
#include
#include
#define M 10
#define S 1
#define T 2
#define INF 0x3f3f3f3f
using namespace std;
struct abcd{
int to,f,nex...
分类:
其他好文 时间:
2015-01-09 19:26:23
阅读次数:
204