网络流
文章平均质量分 71
lj_acm
这个作者很懒,什么都没留下…
展开
-
uva 10806
最小费用,最大流的思想,也不知道怎么稀里糊涂就ac啦#include #include #include using namespace std;const int maxn=102;const int inf=2<<20;int cost[maxn][maxn],flow[maxn][maxn],cap[maxn][maxn],d[maxn];int n,m;int solv原创 2012-11-08 14:45:37 · 711 阅读 · 0 评论 -
poj 2391
又是网络流的建模.二分枚举答案。做这道题时,感觉做过类似的,想都没想就用之前的那个思路做了,结果错的。之前的思路就是,先求出任意两点间的最短路径,然后通过当前枚举的限制,把两点间路径在这个限制内的两点直接i连一条双向边。建s,t,s点到所有点连一条有向边,所有点到t连一条有向边。但这思路是错的,因为虽然在建的图中,任何从s到t的一个流的路径中的相临两点是在限制中,但这些满足限制的边可能经过组合就会原创 2012-12-16 15:51:33 · 502 阅读 · 0 评论 -
hdu 3998
先通过dp求出LIS假设为m,也就是经典的LIS问题。就求出了以点i为终点的LIS,即d[i];然后题目要求输出所有点都不重合的LIS的方案。可以通过最大流来求解。可以想到一个从s到t的流对应于一种方案 。LIS的终点很显然只能是d值为m的点,所以在模型中只把 d值为m的点向终点t连一条有向边。任何一个LIS的起点一定是d值为1的点 所以s向d值为1的点连一条有向边。然后对于每一个点i,把j原创 2012-12-15 18:45:04 · 470 阅读 · 0 评论 -
zoj 3165
最大权独立子集检查了四个小时,最后发现是输出的问题,哎,抓狂#include #include #include #include using namespace std;const int maxn=200*2;const int maxe=maxn*maxn*4;const int inf=1<<28;int val[maxn];int m,n,s,t,tot,clo原创 2012-12-14 19:12:04 · 402 阅读 · 0 评论 -
hdu 3996
最大权闭合图,建议和我一样不知道这个模型的acmer搜一下——国家集训队2007论文集7.胡伯涛《最小割模型》。下面我就谈一下我对最大权闭合图的理解。知道了最大权闭合图的模型后,此题可看做是求最大权闭合图。首先,原图是一些有着权值的点,那么目的就是在这些点中选择一些点,但选一个点i,必须选择它的前提条件的所有点,那么怎么选才能符合这一限制条件呢。那么在点i和i的前提条件的所有点之间连接一条有向边表原创 2012-12-12 19:42:39 · 568 阅读 · 0 评论 -
poj 3189
很久没有一次a的感觉啦。关键是建模,建一个有b+2个点的网络流,s为0,t为b+1,1--b为各个棚。二分枚举答案。s到各棚的容量为当前可行区间内,可选择此棚的牛的个数,各棚到t的容量为割棚可容纳牛的个数。数据量不大,直接用的EK.#include #include #include using namespace std;const int maxn=1001;const in原创 2012-12-10 14:15:11 · 495 阅读 · 0 评论 -
poj 3469
哎,被这道题搞死啦,详细解释在代码中//最小割模型。首先建网络流模型,建立源点s和终点t(分别代表这两块不同的芯片),然后把s和每个点之间连一条容量为1,方向从s到点的边(方向//一定要确定,因为割的容量的定义),然后从每个点到终点连一条容量为1,方向为点到t的边,然后在有联系的//两点之间建一条容量为1的无向边(即一对容量为1方向相反的有向边)。建图完成。那么,在这个网络流模型中的一个割原创 2012-12-09 17:58:19 · 656 阅读 · 0 评论 -
poj 2135
一道基础题,却因为这样那样的粗心,用了这么长时间,和uva10086一模一样#include #include #include #include using namespace std;const int maxn=1100;const int maxe=30000;const int inf=200000000;struct Edge{ int from,to,flow原创 2012-12-09 16:20:32 · 518 阅读 · 0 评论 -
poj 2112
网络流之最大流。此题的关键就是建模,看了题目之后一点思路都没有,后来在网上看了解题报告后,才明白了这个过程。首先,在原图中抽象出一个新图。新图是由旧图中的每个milking machine到每个cow的最短路径组成,每条最短路径由原图中的各点间的某些路径组成,抽象为新图中的一条路径,此过程通过floyd算法(各顶点间的最短路径)实现。接下来,就是通过二分来枚举答案。通过给出一个流量的上限,给新图的原创 2012-12-01 23:26:40 · 701 阅读 · 0 评论 -
poj 1273
网络流最基础的题目,最大流#include #include #include using namespace std;const int maxn=210;const int inf=1<<30;int cap[maxn][maxn],flow[maxn][maxn],d[maxn];int n,m,tot;void ek(){ int q[maxn],p[maxn]原创 2012-11-27 15:25:27 · 464 阅读 · 0 评论 -
hdu 4406
最大费用流,就是流量不固定的最大费用流。不一定是最大流。就是经典的费用与流量平方成正比的最小流(白书上有)模型的应用。一个流,代表一个分配。如果所有科目都及格的话,直接拆边就可以了。这里要考虑的就是如果科目不及格的情况。考虑如何加边能够使最大费用流是保证所有的不及格的科目都及格这一条件下的最大费用流,向s和表示各个不及格科目的节点之间连一条费用足够大(这个”大“大于所有科目(不及格的定原创 2013-09-11 20:38:55 · 1407 阅读 · 0 评论