网络流
收集相关题目
bzcxl
这个作者很懒,什么都没留下…
展开
-
[网络流]方格取数加强版
最大费用最大流,跑spfa时需要把边设成负的,输出时再取反 建图思路: 1.源点和汇点分别连向(1,1)(n , n),容量为k,费用为0,仅表示一共可以走k次; 2.对于方格中的每个点,拆成两个点,分别为入点和出点。入点和出点之间连两条边,一条容量为1,费用为点的权值,表示每个点的数只可以取一次;另一条容量为inf,费用为0,仅表示可以经过无数次; 3.对于在其下方或右边点的点,连一条容量为inf,费用为0的边,表示且仅表示一种联通的关系 代码 #include<iostream&..原创 2021-05-22 22:52:37 · 260 阅读 · 0 评论 -
网络流模板
一、网络最大流 dinic算法 算法过程:通俗理解,每次通过bfs对图进行分层,并查找增广路(可以增加流量的到达汇点的路径),然后做一次dfs,在这条增广路上计算可以增加的流量。对于每一条边,需要建立一条反边,巧妙的解决了回溯的问题。 代码: #include<iostream> #include<cstring> #include<cmath> using namespace std; int n,m,k,last[100010],st,ed,ans; str原创 2021-05-22 22:48:58 · 136 阅读 · 0 评论 -
(dp/费用流)CF1525D Armchairs
本题有两种解法,dp或者是网络流 一、dp 可以证明对于需要挪的两个位子a , b 且 a≤b以及两个空位c , d 且 c≤d,a挪到c并且b挪到d会不劣。 考虑到可以把题目中的要求抽象为每个移动路径覆盖了一段区间,最小化每两个相邻椅子之间的这1单位距离被覆盖的总次数。这样的话如果出现了包含,那么外层的路径多出来的一部分一定可以接到被包含路径的末尾。 意会一下,体现到本题的模型上就是“如果一个人需要走过另一个和他移动方向相同的人已经占下的椅子时,第一个人在这个椅子坐下,让第...原创 2021-05-22 22:16:48 · 229 阅读 · 2 评论