网络流
QinggegeQAQ
南有乔木不可休 汉有游女不可求
展开
-
【bzoj1433】[ZJOI2009]假期的宿舍
题水然而还是有容易错的地方 for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) { int x; scanf("%d",&x); if(x==1)add(i,j+n,1);//突然意识到这个问题 if(i==j)add(i,j+n,1)原创 2016-01-02 19:28:21 · 491 阅读 · 0 评论 -
【bzoj3171】[Tjoi2013]循环格
满足条件的情况必然是每个点的出度=入度=1 所以用流量守恒来限制相等 用最小费用来决策最优改动 到此为止几乎就是拆一下点的裸费用流 然而到此还真是不容易呢。。#include<iostream> #include<cstring> #include<algorithm> #include<cstdio> #include<queue> #include<cmath> using namespa原创 2016-01-02 20:17:42 · 449 阅读 · 0 评论 -
【bzoj1221】[HNOI2001] 软件开发
这个题一定要说点什么。。 这种错误的方法已经犯过两次了: s->i i->i’流量为每日需求量 i’再去连其他可以通过消毒用的天数 这样的拆点有卵用嘛。。 拆点的意义在于新建一个点使得购买的毛巾不消失 而是重新利用 因为每天都会有x的脏毛巾产生 所以每天可以拿去消毒的毛巾就有x 并且最需要注意的是这里毛巾是只要用过随时都可以消毒的 所以i’要往i’+1连边#include<iostream>原创 2016-01-03 11:18:39 · 516 阅读 · 0 评论 -
【bzoj1391】order
这个题还是很机智的。。 最大权闭合子图是怎样通过最小割来限制的 再此基础上稍微变一变。。 但是直接交上去会T 需要用当前弧优化 当前弧优化就是在dfs的时候将流量已经不能再增加的边标记出来 下次dfs的时候直接跳过这些边#include<iostream> #include<cstring> #include<algorithm> #include<cstdio> #include<queue原创 2016-01-01 17:37:02 · 626 阅读 · 2 评论 -
网络流总结
基本模板: 1.最大流 2.最小割 3.费用流 4.上下界网络流 无源汇的上下界可行流 无源汇的最小费用上下界可行流 有源汇的上下界最大流:t向s连一条inf,求一个可行流,ans+=t向s这条边的实际流量,然后删去这条边,再跑一个s到t的最大流,ans+=这个最大流。 有源汇的上下界最小流:t向s连一条inf,求一个可行流,ans+=t向s这条边的实际流量,然后删去这条边,再跑一个原创 2016-04-10 22:42:25 · 453 阅读 · 0 评论