随笔分类 - 网络流
摘要:题意:在空间中给定n个点,给出每个点的三维坐标,以及每个点上已有的花的数目Fi,和可以从该点上移走的花的数目Li,因为每一次可以移动的距离有限,为R, 所以可以选择一个中介点进行转移,最后将所有的花都移动到第一个点上。因为可以从每个点上移走的花的数目有限,所以,可以通过修改每次可以移动的距离R, 使得最终可以将所有的花移动到第一个点。 求最小的R。 若不存在,这输出-1分析:求最小的R, 我们可以二分,转化为判定性问题。 如果已知R, 问是否能将所有的花移动到第一个点呢? 问题是否好解决一点了?? 将所有的花移动到第一个点,其实就是一个很明显的网络流判是否满流的问题了。问题就是构图了。虚拟一个
阅读全文
摘要:很明显的一个二分图多重匹配,一开始用网络流直接建图,悲剧的TLE了之后,看了网上解释,缩点,确实大大简化了问题,也就可以AC了,600+ms一开始是这样建图的,先有虚拟源点s,汇点t,从s向每一个人连一条容量为1的边,每一个人向他适合的每一个planet连一条容量为1边,再从每一个planet连一条容量为w[i](该planet的容量)的边,很明显,判断最大流是否等于n即可。n为100000,而m只有10其实,在这道题目里面,人是无差别的,有区别是他们各自的选择,而总共只有10个planet,也就是所有的选择数也就(1<<10)种,所有选择都相同的人完全是等价的!!!可是,没想到还
阅读全文
摘要:题意:求出1到N 的无向图的无重复边的最短路径数(即所有的最短路径没有公共边)分析:先求出最短路,再找出所有属于最短路的边(满足dist[u]+g[u][v]==dist[v]),把有向边(u,v)加入到新图中,容量为1,(即每条边只能用一次),最后求一次源点为1,汇点为t的最大流即可View Code #include<iostream>#include<algorithm>#include<string>#include<vector>#include<stack>using namespace std;const int N =
阅读全文
摘要:EK 算法:邻接矩阵保存模板题hdu3549#include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> #include<queue> #include<climits> using namespace std; #define N 16 int capacity[N][N];//容量 int flow[N];//残余流量 int pre[N];//前趋 int n, m; queue<
阅读全文