• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
Eric.cpp
博客园 | 首页 | 新随笔 | 新文章 | 联系 | 订阅 订阅 | 管理

随笔分类 -  网络流

 
金华网赛-G(最大费用最大流)&hdu-4406
摘要:累尿了。调不出来。可能:1.建图有问题2.模板有问题(雅埋蝶啊)3.精度有问题参考:http://www.cnblogs.com/jianglangcaijin/archive/2012/10/06/2713375.html浪费时间太长了,A不了,先放一放,周日再搞未AC代码。#include <iostream>#include <cstdio>#include <cstring>#include <queue>#define min(x,y) ((x)<(y)?(x):(y))using namespace std;struct Nod 阅读全文
posted @ 2012-10-25 09:55 Eric.cpp 阅读(260) 评论(0) 推荐(0)
杭州网赛-B(上下界网络流)&hdu-4411
摘要:1.多路径最短路用费用流实现2.每个点要被强制流过->拆点成弧并且加下界为1的容量3.所有点向比它编号大的点连边#include <iostream>#include <stdio.h>#include <queue>#include <math.h>#include <string.h>using namespace std;#define V 1500#define E 1000000#define inf 0x3F3F3F3Fint n,m;int vis[V];int dist[V];int pre[V];#define 阅读全文
posted @ 2012-10-24 16:08 Eric.cpp 阅读(480) 评论(0) 推荐(0)
hdu-4307(最小割)
摘要:这道题,水很深,线性代数当初没学好,一看见矩阵就颤抖,比赛的时候都没敢看这题,后来发布解题报告后才知道这是最小割。建图,求maxflow,然后res-maxflow(n+1)即为所求。用dinic居然超时了,happy457曾经告诉我dinic是永远不会出现超时现象的,它居然超时了。冷静思考一下dinic-O(V^2*E)与hlpp-O(V^2*sqrt(E))在该题上确实有差别,因为E=V*(V-1)/2,瞬间dinic复杂度变为O(V^4),而hlpp为O(V^3).我又一直没去理解hlpp,所以到网上搜了份模板,套上建图,果然1Y了。没想到的是排名倒数第一。囧。。附AC代码:View C 阅读全文
posted @ 2012-07-25 20:51 Eric.cpp 阅读(522) 评论(0) 推荐(0)
hdu-4309(网络流)
摘要:2012多校联合赛第一场,第十题。先不考虑可以修复的桥的性质, 则可以将模型简化为n个点的人通过有通过人数上限的有向边,到达一些有人数上限的特殊的边(隧道)。可以建立最大流模型来求解, 增加一个源点S,和一个汇点T。 S向每个有人的点,连一条容量为人数的边, 图中普通的u->v的有向边,连一条u->v的流量为无穷的边, 桥的流量则为1。 对于隧道,每个隧道可以虚拟出一个点,如u->v的隧道,可以虚拟一个点x,连接u->x,x->v的流量无穷的边, 和x->T的流量为隧道人数上限的边, 求解最大流即可得到最大人数。现在考虑桥的问题,题目中说明了桥最多只有12座 阅读全文
posted @ 2012-07-21 20:59 Eric.cpp 阅读(656) 评论(0) 推荐(0)
2011东北地区赛G题(二分-网络流判可行性)
摘要:题意:从M个参赛选手中选一些人参加N轮比赛,每场比赛只能有一个人胜出,问如何安排比赛,让获胜最多的那个人获胜次数最少。构图:二分次数,用最大流判可行性。源点向参赛人员连容量为该参赛人员最多获胜次数的边,二分限制参赛人员的最多获胜次数;比赛向汇点连容量为每场比赛最多有几人胜出的边;参赛人员分别向自己所参加的比赛连容量为1的边。View Code /*Source CodeProblem: 1003Username: 2010201211Run Time: 736MSMemory: 1084KLanguage:C++JudgeStatus: Accepted*/#include <iostr 阅读全文
posted @ 2012-06-07 21:55 Eric.cpp 阅读(209) 评论(0) 推荐(0)
2011东北地区赛F题(最小费用最大流经典)
摘要:题意:从N个参赛选手中任选2人比赛,胜出的人将获得一定奖金b[i],每个人获胜的次数上限为c[i],给定a[i][j]矩阵,代表i与j需要比a[i][j]次.求要组织完这场赛事至少花费多少钱.赛事无法完成,输出"No,blablabla...".构图:最小费用最大流,分别以比赛种类(所有i与j的比赛算一种)、参赛选手为两个集合构造二部图,1.源点向比赛种类连费用为0,容量为a[i][j]的边;2.参赛选手向汇点连费用为0,容量为获胜次数上限的边;3.每种比赛分别向该种比赛(ivsj)的两个参赛选手i,j连费用为相应参赛选手获胜得到的奖金金额b[i]||b[j],容量为a[i 阅读全文
posted @ 2012-06-06 19:40 Eric.cpp 阅读(257) 评论(0) 推荐(0)
hdu-1569(网络流)-最大点权独立集
摘要:最大点权独立集=总权值-最小点权覆盖集最大点权独立集=最大流最小点权覆盖集=最小割根据奇偶建立二分图,if(i+j)%2==0 源点和该点连接,权值为该点的点权,if(i+j)%2==1 该点和汇点连接,权值为该点的点权,之后若i+j为偶数的点和i+j为奇数的点之间相邻,那么就连一条从为偶数的点到为奇数的点的边,权值为无穷大View Code /*Problem : 1569-方格取数(2) Judge Status : AcceptedRunId : 6039695 Language : G++ Author : 2010201211*/#include <iostre... 阅读全文
posted @ 2012-06-05 21:52 Eric.cpp 阅读(573) 评论(0) 推荐(1)
Codeforces Round #122 (Div. 1)-->TLE代码 跪求(n^2)的最小割顶集算法(Stoer-Wagner)
摘要:A. Cutting Figuretime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputYou've gotten an n × m sheet of squared paper. Some of its squares are painted. Let's mark the set of all painted squares as A. Set A is connected. Your task is to find 阅读全文
posted @ 2012-06-04 10:04 Eric.cpp 阅读(543) 评论(0) 推荐(0)
2011东北地区赛E题(最大费用最大流/二分图最大权匹配)
摘要:题意:过年,一家人做家务,每个人做完每样家务会获得快乐值,每个人最多做家务的数量给予限制,求全家人的最大快乐值.构图:费用流.源点向家庭成员连容量为家务数量的限制数,费用为0的边,家务向终点连容量为1,费用为0的边,家庭成员向家务连容量为1,费用为-权值的边,求最小费用最大流,取反.View Code #include <iostream>#include <stdio.h>#include <queue>#include <math.h>#include <string.h>using namespace std;#define V 阅读全文
posted @ 2012-06-03 19:33 Eric.cpp 阅读(278) 评论(0) 推荐(0)
百度之星初赛第二场C题-费用流求最大权匹配
摘要:C:度度熊的礼物时间限制:1000ms内存限制:65536kB描述度度熊拥有一个自己的Baidu空间,度度熊时不时会给空间朋友赠送礼物,以增加度度熊与朋友之间的友谊值。度度熊在偶然的机会下得到了两种超级礼物,于是决定给每位朋友赠送一件超级礼物。不同类型的朋友在收到不同的礼物所能达到的开心值是不一样的。开心值衡量标准是这样的:每种超级礼物都拥有两个属性(A, B),每个朋友也有两种属性(X, Y),如果该朋友收到这个超级礼物,则这个朋友得到的开心值为A*X + B*Y。由于拥有超级礼物的个数限制,度度熊很好奇如何分配这些超级礼物,才能使好友的开心值总和最大呢?输入第一行n表示度度熊的好友个数。 阅读全文
posted @ 2012-06-03 12:23 Eric.cpp 阅读(581) 评论(2) 推荐(0)
POJ-2195(最小费用最大流)
摘要:题意:二分图最小权匹配。构图:S向左边的点连容量1,费用0的边,右边的点向T连容量1,费用0的边,点之间连容量1,费用为边权的边。最小费用最大流。注意:1.100*100的方格中有10000个点,数组要开大;2.n==0 && m==0 时结束。View Code View Code /*Source CodeProblem: 2195 User: HEU_daoguangMemory: 1172K Time: 94MSLanguage: G++ Result: AcceptedSource Code*/#include <iostream>#include < 阅读全文
posted @ 2012-05-23 13:17 Eric.cpp 阅读(705) 评论(0) 推荐(0)
POJ-2135(最小费用最大流模板)
摘要:最小费用最大流模板:该题注意的几个地方:1.有重边;2 31 2 11 2 21 2 332.无向图,正反方向均要加边。因为此题是无向图,所以建边的时候如果建两条费用都是正的边的话,退流时无法修正费用。所以应该建4条边:第一对:a->b cost 1b->a -cost 0第二对:b->a cost 1a->b -cost 03.数组要开4*(m+2)View Code /*Source CodeProblem: 2135 User: HEU_daoguangMemory: 1532K Time: 32MSLanguage: G++ Result: AcceptedSo 阅读全文
posted @ 2012-05-22 20:03 Eric.cpp 阅读(1865) 评论(0) 推荐(0)
POJ-2391(网络流)
摘要:题意:F个地区。已知各个地区之间的行走时间。每个地区I有两个属性:这个地区当前牛的个数,下雨的时候这个地区实际能够容纳牛的个数。问至少需要多少时间,使所有的牛在下雨的时候都能够被容纳。构图:先Floyd求所有点对之间最短路。二分最短时间,源向I连容量为初始牛数的边,I’向汇连容量为所能容纳牛数的边,I向I’连容量无穷大的边,若I,J能够在mid时间内到达,则连无穷大的边,用最大流判可行性。注意几点:1.点之间的距离非常大,鄙人宏定义1500000005000,同时注意long long的使用;2.无向图;3.自己可以流向自己;4.拆点:1流向2,2流向3并不意味着1能流向3。View Code 阅读全文
posted @ 2012-05-21 19:25 Eric.cpp 阅读(223) 评论(0) 推荐(0)
POJ-1273(网络流)
摘要:裸裸的最大流模板题。View Code /*Source CodeProblem: 1273 User: HEU_daoguang Memory: 704K Time: 0MS Language: G++ Result: Accepted Source Code*/ #include <iostream>#include <stdio.h>#include <string.h>#include <stdlib.h>using namespace std;int m,n;#define V 250#define E 400500#define in 阅读全文
posted @ 2012-05-20 20:36 Eric.cpp 阅读(191) 评论(0) 推荐(0)
POJ-1149(网络流)
摘要:题意:有M个猪圈和N个顾客,最初猪圈是锁着的。每个顾客有其中的A把钥匙,需要买B头猪,顾客在买完猪便将门锁上,而且顾客是按照顺序来的。商家可以对开着的猪圈里面的猪进行任意调配,问最多可以卖出几头猪。构图:若该顾客是第一个来这个猪圈,则源向这个点连容量为猪圈猪数的边,否则从第一个来这个猪圈的顾客向他连容量无穷大的边,最大流。参考上交某退役神牛的文献:http://imlazy.ycool.com/post.2059102.htmlView Code /*Source CodeProblem: 1149 User: HEU_daoguangMemory: 712K Time: 32MSLang.. 阅读全文
posted @ 2012-05-19 16:11 Eric.cpp 阅读(284) 评论(0) 推荐(0)
POJ-2455(网络流)-无向图的处理
摘要:题意:有N个农场,P条无向路连接。要从1到N不重复走T条路,求所经过的直接连接两个区域的道路中最长道路中的最小值,。构图:源点向1连容量T的边。二分最小长度,长度超过mid的边容量为0,否则为1,用最大流判可行性。注意:1.该题有重边,切忌用邻接矩阵删除重边(重边要用邻接表来处理以保留)。2.无向图在addedge中要进行处理(处理方式见代码)。View Code /*Source CodeProblem: 2455 User: HEU_daoguangMemory: 2440K Time: 188MSLanguage: G++ Result: AcceptedSource Code*/... 阅读全文
posted @ 2012-05-18 22:26 Eric.cpp 阅读(1345) 评论(0) 推荐(0)
POJ-2112(网络流)
摘要:题意:有K台挤奶机(编号1~K),C头奶牛(编号K+1~K+C),给出各点之间距离。现在要让C头奶牛到挤奶机去挤奶,每台挤奶机只能处理M头奶牛,求使所走路程最远的奶牛的路程最短的方案。构图:先Floyd求所有点对之间最短路,二分最短长度,若奶牛与挤奶机之间的距离大于mid则不连边,否则连容量为1的边。源向挤奶机连容量M的边,奶牛向汇连容量1的边,用最大流判可行性。View Code #include <iostream>#include <stdio.h>#include <string.h>using namespace std;#define V 300 阅读全文
posted @ 2012-05-16 22:10 Eric.cpp 阅读(229) 评论(0) 推荐(0)
POJ-1698(网络流)
摘要:题意:有N部电影,分别可以在一个星期的几天拍摄,并可以拍W个星期,Alice可以有D个星期拍这部电影,一天只能拍一部电影。问Alice能否拍完所有电影。构图:把日程表上所有的点弄出来,如果电影能在这天拍摄,则从电影I向这天连容量为1的边。源点向每一部电影连容量为D的边。每一天向汇点连一条容量1的边。做最大流,若等于sum{d[i]}则可以,否则不可以。View Code Source CodeProblem: 1698 User: HEU_daoguang Memory: 920K Time: 0MS Language: G++ Result: Accepted Source Code ... 阅读全文
posted @ 2012-05-16 22:05 Eric.cpp 阅读(182) 评论(0) 推荐(0)
Dinic(亲笔)
摘要:今天真有成就感啊。参照"王欣上《浅谈基于分层思想的网络流算法》.doc"亲手实现了一下dinic算法。p<-s;While outdegree(s)>0 u<-p.top; if u!=t if outdegree(u)>0 设(u,v)为层次图中的一条边; p<-v; else 从p和层次图中删除点u, 以及和u连接的所有边; else 增广p(删除了p中的饱和边); 令p.top为p中从s可到达的最后顶点;end whileView Code Source CodeProblem: 1698 User: HEU_daoguang Memor 阅读全文
posted @ 2012-05-16 21:47 Eric.cpp 阅读(260) 评论(0) 推荐(0)
 

公告


博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3