解题报告
思路:
从s->t 再从t->s等同与s->t两次,要求每条路只能走一次,要求最小花费,让每一条边容量为1,跑跑费用流
只要跑出流量为2就结束。
#include
#include
#include
#include
#define inf 0x3f3f3f3f
#define N 5000
#define M 50000
using namespace std;
in...
分类:
其他好文 时间:
2014-08-24 20:54:23
阅读次数:
274
题目地址:HDU 3315
这个题的思路是自己想出来的,自我感觉挺巧妙的。。。(大牛勿喷。。。)对大胆建图又多了一份信心。
具体思路是构造一个二分图,Si连源点,Xi连汇点,流量都是1,费用0.然后当Si可以赢Xj的时候,就对这两人连一条边,费用值为-Vi*1000,如果i==j的话,费用值就再减1,因为题目要求尽量不改变原先的顺序,所以说应该尽量让序号相同的对打。而费用值减1的话,会优先考虑...
分类:
其他好文 时间:
2014-08-23 23:00:21
阅读次数:
221
题目地址:POJ 3680
这题的建图真心想不出来。建图思维还是不够开阔,不够大胆。
这题要先对坐标进行离散化。可以用左边的点发出一条到右边的点的边,容量为1,费用为负的权值。然后从左往右将依次将相邻的两个点都连起来,权值为0,容量为k,也就是说,如果选了这个区间,就会从费用为负数的边流过去,否则,就是从这个费用为0的边流过去。然后建立一个超级源点与最左边的点相连,权值为0,容量为k,这样就保...
分类:
其他好文 时间:
2014-08-23 21:43:31
阅读次数:
226
解题报告
题目传送门
思路:
bfs建图跑一下费用流就行。
#include
#include
#include
#include
#define inf 0x3f3f3f3f
using namespace std;
struct E {
int v,cost,cap,next;
} edge[100000];
int head[1000],cnt,dis[1000],...
分类:
其他好文 时间:
2014-08-23 19:07:51
阅读次数:
243
K路径覆盖问题,最小费用最大流。。。。最小K路径覆盖的模型,用费用流或者KM算法解决,构造二部图,X部有N*M个节点,源点向X部每一个节点连一条边,流量1,费用0,Y部有N*M个节点,每一个节点向汇点连一条边,流量1,费用0,假设X部的节点x能够在一步之内到达Y部的节点y,那么就连边x->y,费用为...
分类:
其他好文 时间:
2014-08-23 12:33:20
阅读次数:
241
解题报告
题目传送门
题意:
从n×n的矩阵的左上角走到右下角,每次只能向右和向下走,走到一个格子上加上格子的数,可以走k次。问最大的和是多少。
思路:
建图:每个格子掰成两个点,分别叫“出点”,“入点”,
入点到出点间连一个容量1,费用为格子数的边,以及一个容量∞,费用0的边。
同时,一个格子的“出点”向它右、下的格子的“入点”连边,容量∞,费用0。
源点向(0,0)的入点连一个容...
分类:
其他好文 时间:
2014-08-21 22:56:05
阅读次数:
503
解题报告
题意:有n个商店,m个提供商,k种商品
n*k的矩阵,表示每个商店需要每个商品的数目;
m*k矩阵,表示每个提供商拥有每个商品的个数
然后对于每个物品k,都有n*m的矩阵
i行j列表示
从j提供商向i商店运送一个k商品的代价是多少
判断所有的仓库能否满足所有客户的需求,如果可以,求出最少的运输总费用思路:建图的题,不能直接把所有信息建成图,因为n和m跟k都有关系,如果那样子建图...
分类:
其他好文 时间:
2014-08-20 22:48:53
阅读次数:
390
Minimum Cost
Time Limit: 4000MS
Memory Limit: 65536K
Total Submissions: 13531
Accepted: 4635
Description
Dearboy, a goods victualer, now comes to a big problem, and he...
分类:
其他好文 时间:
2014-08-20 21:09:52
阅读次数:
238
题目地址:POJ 2516
我晕啊。。。这题一上来就想到了对每种货物分开求。。但是马上就放弃了。。感觉这样求50次费用流太耗时。。后来就果断拆点,拆了好长时间,一直TLE。。即使降到了2600个点也TLE。。然后又想起了这个分开求的方法,又突然觉得100个点的费用流几乎不费什么时间。。最多也只是求50次而已,还是可以试试的。。于是一试居然还真过了。。。
说到这里,思路应该已经知道了吧。就是对每...
分类:
其他好文 时间:
2014-08-20 16:23:42
阅读次数:
202
题目地址:POJ 3422
方法是对每个点i拆点成i'和i'',然后对每个i'和i''连一条费用为该点值,流量为1的边,再连1条费用为0,流量为k-1的边。
然后对每个点与右边下边相邻的点连边,流量均为INF,费用均为0。需要再建一源点与汇点,对于k次只需要在源点与汇点处进行限制即可。
代码如下:
#include
#include
#include
#include
#inclu...
分类:
其他好文 时间:
2014-08-20 16:22:22
阅读次数:
274