网络流
Richard_for_OI
老年退役选手orz
展开
-
网络流(零)——准备工作
最大流dinic:int dep[N], Q[N]; inline bool bfs() { memset(dep, 0, sizeof(dep)); dep[st] = 1; int l = 0, r = 1; Q[1] = st; while(l < r) { int u = Q[++l]; for(int i = head[u], v; i; i = e[i].next)...原创 2018-04-04 20:25:29 · 155 阅读 · 0 评论 -
多重匹配
广义的二分匹配。每个boyi最多可以同时和kl[i]个girl在一起,每个girli最多可以和kr[i]个boy在一起。(这样比喻多好理解)解决方案:1、拆点。2、如果有一边所有的人都比较保守,只能和一个人在一起,那么我们考虑:如果把这些点都弄到右边,可以在dfs时直接给每个左边的点做kl[i]次;如果都弄到左边,那让右边的节点可以匹配kr[j]次,若超过次数,就尝试递归当前已和她匹配上的这些节点...原创 2018-03-11 19:10:16 · 587 阅读 · 0 评论 -
bzoj1001
这题是一个裸的网络流,写的时候注意不要建错图哦~ #include #include #include #include #define N 1100000 using namespace std; struct EDGE { int x, y, c, next, other; //c表示x->y的流量,other表示这条边的反向边的编号 }edge[6*N]; int原创 2017-12-06 20:28:42 · 309 阅读 · 0 评论 -
TJOI2018 d1t2 智力竞赛
题意不太明确......这题的n需要一上来就+1。就是求一个可交最小路径覆盖,二分答案即可。不知道为什么我的常数那么大,别人几乎300ms就完事了,我需要800ms。#include <cstdio> #include <cstring> #include <algorithm> using namespace std; inline char gc() { ...原创 2018-05-15 22:21:33 · 332 阅读 · 0 评论