网络流 || 费用流
Chester_King
虽千万人,吾往矣。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【POJ】1273 Drainage Ditches 网络最大流
这是一道经典的网络最大流的题目,个人认为这题入门小白…… 题目大意:现在有m个池塘(从1到m开始编号,1为源点,m为汇点),及n条水渠,给出这n条水渠所连接的池塘和所能流过的水量,求水渠中所能流过的水的最大容量. 方法一:EK(Edmonds_Karp) 方法二:Dinic原创 2017-02-16 10:36:53 · 432 阅读 · 0 评论 -
【BZOJ】1163&&1339 [Baltic2008]Mafia 网络流
题目传送门这题的直观感受就是最小割,可又是无从下手……尴尬.jpg然而可以把原图中的一个点拆成两个点:一个入点和一个出点。把每个入点和对应的出点连一条流量为原图中的点的点权。对于原图中的边,把两端的出点和入点分别连一条流量为+∞+\infty的边。然后建立源点和汇点,源点和起点的入点连一条流量为+∞+\infty的边,终点的出点和汇点连一条流量为+∞+\infty的边。然后跑最大流,求得答案即为最小原创 2017-10-27 16:15:01 · 261 阅读 · 0 评论 -
【BZOJ】2521 [Shoi2010]最小生成树 网络流
题目传送门可以把题目所给的操作看成给一条边的权值+1。(好有道理啊)解读一下题意:把所有权值不大于给定的边(不包括给定的边)建出来,使得给定的边的两个端点不连通。那么考虑重建图,以差值+1为边权,问题转化为求新图的最小割,Dinic即可。附上AC代码:#include <cstdio> #include <cstring> #include <queue> using namespace std;c原创 2017-12-03 20:01:51 · 272 阅读 · 0 评论 -
【BZOJ】1305 [CQOI2009]dance跳舞 网络流
题目传送门又是一道神题……为什么网络流的建图都这么诡异啊……写在前面:互相喜欢什么的……cp都得死!身为单身狗的我手中多出了不知名的火把和汽油考虑把所有的男孩和女孩都拆成两个点,分别表示喜欢点和不喜欢点。 对于一对相互喜欢的男孩女孩,男孩的喜欢点向女孩的喜欢点建一条流量为1的边。 对于一对不互相喜欢的男孩女孩,男孩的不喜欢点向女孩的不喜欢点建一条流量为1的边。 每一个男孩的喜欢点向不喜欢点建一条流量原创 2017-12-16 10:50:16 · 317 阅读 · 0 评论 -
【LOJ】6007 「网络流 24 题」方格取数 网络流
题目传送门这题的解题思路和“【BZOJ】1497 [NOI2006]最大获利”这题差不多。因为如果一个方格被选取,则与这个方格四联通的方格都不能被选取,那么我们可以对整个棋盘染黑白两色并建边: 所有黑色方格与源点建一条流量为方格中数字的边。 所有白色方格与汇点建立一条流量为方格中数字的边。 所有黑色的方格与其四联通的白色方格建立一条流量为+∞+\infty的边。 然后对新建出来的图做一遍最小割,也就原创 2017-10-23 19:51:31 · 376 阅读 · 0 评论 -
【BZOJ】1497 [NOI2006]最大获利 网络流
题目传送门原来网络流还可以这么用啊,又长知识啦。其实这题的思路是最小割。首先建立源点和汇点两个虚点,所有的中转站和源点连一条流量为中转站成本的边,所有用户和汇点连一条流量为用户收益的边。对于每个用户,把这个用户和对应的两个中转站连两条流量为+∞+\infty的边。然后再对整张图做一遍最小割,割源点与中转站的边表示付出成本,割用户与汇点的边表示放弃收益。最后的答案即为收益总和减去最小割。有定理“最小割原创 2017-10-21 08:51:41 · 274 阅读 · 0 评论 -
【BZOJ】4554 [Tjoi2016&Heoi2016]游戏 二分图
题目传送门 快热死啦,突然觉得空调是那么伟大的发明,没有空调我快活不下去啦——在炎热的下午,顶着连绵不绝的睡意,要想写对一道题真的不容易啊。 回到题目,这题的正解是二分图。 首先我们考虑没有硬石头的情况,我们可以发现对于每一个可以放炸弹的地方,我们可以把该节点的横坐标和纵坐标连边,然后题目就转化成了行与列的二分图最大匹配。 然后我们考虑有硬石头的情况,可以发现每一块硬石头把原本连在一起的行原创 2017-07-26 21:22:12 · 286 阅读 · 0 评论 -
【POJ】2135 Farm Tour 最小费用最大流
题目传送门 这题用到了最小费用最大流,一条边的容量为1,代价为这条边的长度。 建立超级源点通向节点1,容量为2,代价为0;节点n通向超级汇点,容量为2,代价为0。 之后刷一遍最小费用最大流就行了。 注意:这题里的边都是双向边,比方说从节点x到节点y和从节点y到节点x是不同的走法。 附上AC代码: #include #include #include #include using原创 2017-04-16 20:57:18 · 619 阅读 · 0 评论 -
【洛谷】3381 【模板】最小费用最大流
题目传送门 划水啊,就是最小费用最大流的模板,只是标记一下自己会了这种算法。 正解就是SPFA+EK,在SPFA扩展的过程中加入EK的判断——这条边的流量是否还有剩余。 然后在所有节点都扩展完毕后进行EK的流量修改,最后统计答案。 附上AC代码: #include #include #include #include using namespace std; struct no原创 2017-04-16 18:31:10 · 517 阅读 · 0 评论 -
【BZOJ】 1001 [BeiJing2006]狼抓兔子 网络最大流
题目传送门:BZOJ1001 %%%LYF大神,打的是SPFA,如果不用vector和queue,肯定比我跑的快…… 说实话,如果这题的数据造的强大一些,我的dinic应该是要被卡掉的。 这题我打的是网络最大流,也是我看了题目后想到的第一种解法。 主要是建图,要好好想想,怎样把二维的图转换成一维的n*m个点。 附上AC代码: #include #include using na原创 2017-03-15 18:42:48 · 372 阅读 · 0 评论 -
【BZOJ】3993 [SDOI2015]星际战争 二分+网络流
题目传送门 网络流的用法又涨姿势了——网络流可以用于判断答案的可行性。 这题我们首先考虑建图: 第ii个机器人向超级汇点连一条流量为aia_i的边。 超级源点向第ii个武器连一条流量为??的边。(??表示流量暂时未定) 如果第ii个武器可以打到第jj个机器人,就连一条流量为+∞+\infty的边。 然后考虑二分一个时间midmid作为答案,这时考虑第2条建图,这时的??就等于bi×mi原创 2018-01-15 21:08:45 · 293 阅读 · 0 评论
分享