大水题一遍 过掉比较繁琐的拆点还是非常开心的 发现每一条边的边权可能不是$1$,但是边权的范围非常小,同时点数也非常小,只有$n include include define re register define maxn 105 define LL long long const int mod= ...
分类:
其他好文 时间:
2019-01-01 20:59:48
阅读次数:
129
将回到1的过程反向。拆点,除点1、n点内容量为2以外,其余点的容量为1。点内的费用都为 1。其余建图就很明显了(容量正无穷,费用0)。这样,跑mfmc即可。答案为 cost 2(1、n被算了两次)。 输出答案,分两次搜索就好了,第一次搜索,每到一个点,选择一个流满(反向边有流量)的边到下一个点,同时 ...
分类:
其他好文 时间:
2018-12-25 21:07:18
阅读次数:
119
"传送门" 首先有一个结论:一个只有0,1的邻接矩阵,$f[i][j]$表示第$i$点到第$j$点走1步的路径条数。那么这个矩阵的k次幂的$f[i][j]$就表示第$i$点到第$j$点走k步的路径条数。 这个可以用矩阵快速幂优化,不过图有边权怎么办? 我们可以拆点。因为边权很小,所以可以把每个点都拆 ...
分类:
其他好文 时间:
2018-12-20 01:06:10
阅读次数:
187
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1927 首先注意到这是个DAG; 考虑每个点从哪里来,可以是瞬移来的,也可以是从某个点走过来的,而从每个点走出去只能用一次; 所以拆点,i 表示从这个点走出去,n+i 表示来到这个点; 建图: ...
分类:
其他好文 时间:
2018-12-18 11:01:39
阅读次数:
152
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1711 食物一列,牛拆点,饮料一列。 代码如下: ...
分类:
其他好文 时间:
2018-12-16 14:40:36
阅读次数:
111
因为直接利用费用流可能会导致经过相同的点,所以利用拆点法 除了首尾结点之外其他的每一个结点都拆成两个结点,并且两个结点之间连一条容量为1,费用为0的边,这样做的理由也很简单 一旦一个节点用过之后,下次再经过这个节点之后再也没有办法扩展到其他节点了 ...
分类:
其他好文 时间:
2018-12-02 12:11:06
阅读次数:
202
const int maxn = 2000 + 10; const int INF = 1000000000; struct Edge { int from, to, cap, flow, cost; Edge(int u, int v, int c, int f, int w):from(u),t... ...
分类:
其他好文 时间:
2018-12-01 23:36:05
阅读次数:
239
题意:图没什么用 给出一个地图 地图上有 点 一次可以覆盖2个连续 的点( 左右 或者 上下表示连续)问最少几条边可以使得每个点都被覆盖 最小路径覆盖 最小路径覆盖=|G|-最大匹配数 证明:https://blog.csdn.net/qq_34564984/article/details/5277 ...
分类:
其他好文 时间:
2018-11-25 01:27:29
阅读次数:
233
<题目链接> 题目大意: 有N头牛,F种食物,D种饮料,每一头牛都有自己喜欢的食物和饮料,且每一种食物和饮料都只有一份,让你分配这些食物和饮料,问最多能使多少头牛同时获得自己喜欢的食物和饮料。 解题分析: 开始还以为是一道匹配问题,后面才知道这是用网络流求解。 首先我们要明确,如果按照源点——>食物 ...
分类:
其他好文 时间:
2018-11-23 17:28:27
阅读次数:
173
<题目链接> 题目大意:给出n个点m条单向边边以及经过每条边的费用,让你求出走过一个哈密顿环(除起点外,每个点只能走一次)的最小费用。题目保证至少存在一个环满足条件。 解题分析: 因为要求包含所有点一次的环,我们不难发现,这个环中的每个点的出度和入度均为1,所以我们不妨将每个点进行拆点,将所有点的出 ...
分类:
编程语言 时间:
2018-11-18 14:15:00
阅读次数:
301