【算法】费用流
文章平均质量分 64
cz_xuyixuan
这个作者很懒,什么都没留下…
展开
-
【BZOJ2597】【WC2007】剪刀石头布
【题目链接】点击打开链接【思路要点】数据范围暗示网络流/线性规划,但直接建图不太可行,需要发掘题目性质。考虑一个原图三个点的子图,它共有3条边,\(2^{3}=8\)种形式,其中能对答案产生1的贡献的有2种。观察剩余6种形式,我们发现,它们都满足三个端点处分别是一入一出、两入、两出。如果我们把出现一次这6种形式之一看做对答案造成1点损失,那么把损失归原创 2018-01-17 10:05:55 · 330 阅读 · 0 评论 -
【AtCoder】AtCoder Grand Contest 034 题解
【比赛链接】点击打开链接【题解链接】点击打开链接【A】 Kenken Race【思路要点】首先, AAA 到 CCC 中与 BBB 到 DDD 中不能存在连续的两个障碍物。其次,若 D<CD<CD<C ,需要额外满足 BBB 到 DDD 中存在至少一个空位两侧均为空位。时间复杂度 O(N)O(N)O(N) 。【代码】#...原创 2019-06-03 09:43:54 · 756 阅读 · 0 评论 -
【省内训练2019-06-01】颁奖
【思路要点】较为简单的模拟费用流问题。可以参考 WC2019WC2019WC2019 第一课堂陈江伦的《模拟费用流问题》课件。时间复杂度 O(NLogN)O(NLogN)O(NLogN) 。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 2e5 + 5;const long lon...原创 2019-06-05 12:51:36 · 417 阅读 · 0 评论 -
【省内训练2018-09-15】Flow
【思路要点】 为每条边附加一个 111 的费用,问题等价于原图上的最大费用循环流。 不妨假设所有边都已经流满,将所有边反向,记 didid_i 表示原图中点 iii 出度减入度的差,若 didid_i 大于 000 ,则将 iii 连向汇点,容量为 didid_i ,否则将源点连向 iii ,容量为 −di−di-d_i 。 新图上的最小费用最大流的费用就代表了为了保证流量平...原创 2018-09-17 08:42:02 · 231 阅读 · 0 评论 -
【BZOJ1927】【SDOI2010】星际竞速
【题目链接】 点击打开链接 【思路要点】 补档博客,无题解。 【代码】 #include<bits/stdc++.h>using namespace std;#define MAXN 5005#define MAXQ 1000005#define INF 1e9template <typen...原创 2018-07-12 16:53:35 · 208 阅读 · 0 评论 -
【BZOJ1877】【SDOI2009】晨跑
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 505#define INF 1e9#define MAXQ 1000005template <typename T> void read(T &x) { x = 0; int f ...原创 2018-06-20 15:18:17 · 258 阅读 · 0 评论 -
【LOJ2321】「清华集训 2017」无限之环
【题目链接】 点击打开链接 【思路要点】 先说这道题的正解: 将棋盘看做一张二分图,每一条边拆成两个点,分别属于二分图的一边。 我们需要做一件类似于匹配的事情,同一条边的两侧或是都没有管道,或是都有管道。 通过合适的建边我们能够用最小费用最大流来解决本题。 时间复杂度O(MinCostFlow(N∗M,N∗M))O(MinCostFlow(N∗...原创 2018-06-26 21:09:16 · 479 阅读 · 0 评论 -
【BZOJ3502】【PA2012】Tanie linie
【题目链接】 点击打开链接 【思路要点】 容易发现一种可行的费用流建边。 用线段树模拟上述费用流,我们需要实现查找区间最大子段和和区间取反。 时间复杂度O(MLogN)O(MLogN)O(MLogN)。 【代码】 #include&amp;lt;bits/stdc++.h&amp;gt;using namespace std;#define...原创 2018-06-26 17:51:07 · 286 阅读 · 0 评论 -
【BZOJ2288】【POJ Challenge】生日礼物
【题目链接】 点击打开链接 【思路要点】 容易发现一种可行的费用流建边。 用线段树模拟上述费用流,我们需要实现查找区间最大子段和和区间取反。 时间复杂度O(MLogN)O(MLogN)O(MLogN)。 【代码】 #include&amp;lt;bits/stdc++.h&amp;gt;using namespace std;#define...原创 2018-06-26 17:49:24 · 608 阅读 · 0 评论 -
【BZOJ3267】KC采花
【题目链接】 点击打开链接 【思路要点】 容易发现一种可行的费用流建边。 用线段树模拟上述费用流,我们需要实现查找区间最大子段和和区间取反。 时间复杂度O(MKLogN)O(MKLogN)O(MKLogN)。 【代码】 #include&amp;lt;bits/stdc++.h&amp;gt;using namespace std;#def...原创 2018-06-26 17:46:30 · 269 阅读 · 0 评论 -
【BZOJ3272】Zgg吃东西
【题目链接】 点击打开链接 【思路要点】 容易发现一种可行的费用流建边。 用线段树模拟上述费用流,我们需要实现查找区间最大子段和和区间取反。 时间复杂度O(MKLogN)O(MKLogN)O(MKLogN)。 【代码】 #include&amp;amp;lt;bits/stdc++.h&amp;amp;gt;using namespace std;#def...原创 2018-06-26 17:44:26 · 426 阅读 · 0 评论 -
【BZOJ3638】k-Maximum Subsequence Sum
【题目链接】 点击打开链接 【思路要点】 容易发现一种可行的费用流建边。 用线段树模拟上述费用流,我们需要实现查找区间最大子段和和区间取反。 时间复杂度O(MKLogN)O(MKLogN)O(MKLogN)。 【代码】 #include&amp;amp;lt;bits/stdc++.h&amp;amp;gt;using namespace std;#def...原创 2018-06-26 17:41:15 · 437 阅读 · 0 评论 -
【BZOJ2879】【NOI2012】美食节
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 105#define MAXP 1000005#define MAXQ 1000005#define INF 1e9template <typename T> void read(T &am...原创 2018-06-08 13:49:15 · 207 阅读 · 0 评论 -
【BZOJ1070】【SCOI2007】修车
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 105#define MAXP 1005#define MAXQ 1000005#define INF 1e9template <typename T> void read(T &x...原创 2018-06-07 19:58:37 · 218 阅读 · 0 评论 -
【BZOJ4514】【SDOI2016】数字配对
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 505#define INF 1e18#define MAXQ 1000005template <typename T> void read(T &x) { x = 0; int f...原创 2018-06-20 20:58:13 · 209 阅读 · 0 评论 -
【BZOJ2661】连连看
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 1005#define INF 1e9#define MAXQ 1000005template <typename T> void read(T &x) { x = 0; int f...原创 2018-06-20 19:45:22 · 264 阅读 · 0 评论 -
【BZOJ4482】【JSOI2015】套娃
【题目链接】点击打开链接【思路要点】显然有费用流做法(50分)。但数据范围很大,最小割建不出图,因此考虑贪心。首先,套娃的内外径是可以分开考虑的。对套娃按\(B_i\)排序,按顺序处理每一个套娃的内径,在所有套娃的外径中找到一个可以套入当前内径的前提下最大的外径(也可能找不到),将其套入该内径,并删除之。正确性证明(其实挺显然的):令当前套娃好看度为\(B_i\),若被上述算法选中的外径没有被套入...原创 2018-04-20 20:48:33 · 1021 阅读 · 0 评论 -
【BZOJ3876】【JSOI2014】支线剧情
【题目链接】点击打开链接【思路要点】有上下界的费用流。时间复杂度\(O(MinimumCostFlow(N,\sum K_i))\)。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 305;const int MAXQ = 1e6 + 5;const int INF = 1e9;template ...原创 2018-04-22 16:25:33 · 194 阅读 · 0 评论 -
【校内训练2019-07-08】串
【思路要点】将一组 S2[i],T2[i]S_2[i],T_2[i]S2[i],T2[i] 看做一条边 T2[i]→S2[i]T_2[i]\rightarrow S_2[i]T2[i]→S2[i] ,则使得 S1[i]S_1[i]S1[i] 成为 T1[i]T_1[i]T1[i] 的交换过程对应了一条 S1[i]S_1[i]S1[i] 到 T1[i]T_1[i]T1[i] 的...原创 2019-07-08 13:57:18 · 379 阅读 · 0 评论