前言 线段树+网络最大流的建模题。 题目链接 题目大意 最初时有 \(n\) 个 \(1\) 。给定 \(op\) 、 \(l\) ,其中, \(l\) 为操作次数上限。你有四个操作: 若 \(op=1\) ,则接下来两个整数 \(a,b\) ,表示可以将 \(a\) 变为 \(b\) 。 若 \( ...
分类:
其他好文 时间:
2021-04-05 12:14:54
阅读次数:
0
感觉做起来很爽,理解题意之后建图跑就行了 思路 问题模型:二分图多重匹配 转化模型:网络最大流 大概是做过最简单的网络流题了…… 其实就是一个二分图多重匹配的问题,一个单位可以匹配多个桌子,问题就是求能不能使这些单位的人都能入座且一个桌子上最多只有一个来自同一单位的人。 将源点 \(S\) 与单位之 ...
分类:
其他好文 时间:
2020-09-03 16:39:01
阅读次数:
48
#include <iostream> #include <cstdio> #include <cstring> #define N 200005 using namespace std; #define int long long int n,m,S,T,tmp1,tmp2,tot; int id ...
分类:
其他好文 时间:
2020-06-25 13:31:36
阅读次数:
58
不得不复习一下网络流了,先复习最大流模板吧 最主要的就是dfs和bfs过程吧 bfs是为了分层和判断是否需要继续 显然对于一个图,分层之后,对于任一一边,起点要么加一等于终点,要么终点小于起点 终点小于起点的显然已经计算过,不需要松弛() 判断是否需要继续增广实际上是看终点是否有depth就可以解决 ...
分类:
其他好文 时间:
2020-05-03 15:06:04
阅读次数:
70
$\quad$ 网络流 (Network Flows)指的是一张联通无向图 $G$,每条边具有两个属性:容量、流量。每条边的流量常用 $f_{i,j}$ 表示,容量常用 $c_{i,j}$ 表示。网络流有 容量限制 (Capacity Constraints),一条边的流量不可以超过它的容量;网络流 ...
分类:
其他好文 时间:
2020-02-11 19:21:37
阅读次数:
91
关于网络流: 1.定义 个人理解网络流的意思便是由一条条水管以及一个源点S一个汇点T和一些节点组成的一张图,现在要从S点流水到T点,问怎么流才能让流到T的流量最大。边权表示的是这条水管的最大流量,假设一条水管的边权是4,那么如果往这个水管里流5那么自然就会炸掉。 关于网络流一些文字上的概念,和一张图 ...
分类:
其他好文 时间:
2020-02-02 15:52:40
阅读次数:
77
"原题链接" 这道题,很明显是个配对问题。于是,我们可以想到用网络最大流来做。 先整理一下题目条件。 1. 很明显,根据贪心思想,要使最多人满意,每个人应该最多睡一个房间(似乎也没有人能睡两个房间),吃一道菜。这就要求一个人最多与一个房间、一道菜配对。 2. 每个人必须住进喜欢的房间 且 吃到喜欢的 ...
分类:
其他好文 时间:
2020-01-30 09:37:44
阅读次数:
68
第一道题是模板题,下面主要是两种模板,但都用的是Dinic算法(第二个题也是) 第一题: 题意就不需要讲了,直接上代码: vector代码: 1 //invalid types 'int[int]' for array subscript :字母重复定义 2 #include<stdio.h> 3 ...
分类:
其他好文 时间:
2019-11-16 21:55:43
阅读次数:
96
void add_dinic(int u, int v) { e[++cnt].v = v; e[cnt].w = 0; e[cnt].nxt = head[u]; head[u] = cnt; } int dfs_dinic(int x, int flow) { if (x == ed) retu ...
分类:
编程语言 时间:
2019-11-09 00:03:06
阅读次数:
114
..突然发现自己拖了很久都没有学习有关网络流的东西了,所以先从模板开始写起吧. dinic code: #include<iostream> #include<cstring> #include<queue> #define INF 0x3f3f3f3f const int MAXN = 1e6+5 ...
分类:
其他好文 时间:
2019-11-07 18:50:47
阅读次数:
73