![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
网络流
mayaohua2003
这个作者很懒,什么都没留下…
展开
-
Codeforces gym 101471 J
很厉害的题目。首先发现vvv是没有意义的,我们可以将Flubber流量乘上vvv,最后除vav^ava即可。我们先算出只考虑Flubber的最大流量AAA,只考虑水的最大流量BBB,以及总的最大流量CCC,显然C≥max(A,B)C\geq \max(A,B)C≥max(A,B)。那么我们可以发现一个性质:我们可以任意分配CCC给两种物质,只要满足分配给Flubber的W≤AW\leq AW≤A,分配给水的C−W≤BC-W\leq BC−W≤B即可。证明可以考虑最大流最小割定理:我们先加入一个超级源点原创 2020-12-24 12:25:15 · 216 阅读 · 0 评论 -
Codeforces Round 1416 简要题解
A. k-Amazing Numbers略B. Make Them Equal略C. XOR Inverse略D. Graph and Queries处理仅含删边的图连通性问题,可以离线后倒着处理,转化为仅含加边的图连通性问题,可以简单地用并查集维护。不仅如此,我们还可以尝试对连通块的合并建出一个有根树森林,其中叶子节点是初始时的点,每次合并两个连通块新建一个点作为它们的共同父亲即可。这样,任意时刻某个连通块对应的点集对应某个子树,若我们只维护真实的节点,可以理解为dfs序上一段区间。这样问原创 2020-11-23 23:21:16 · 260 阅读 · 0 评论 -
Codeforces Round 1404 简要题解
A. Balanced Bitstring略B. Tree Tag略C. Fixed Point Removal先考虑对固定的数组aaa如何求解。显然如果某个初始的i<aii<a_ii<ai一定不可移除,否则我们为了移除它,需要某个时刻在[1,i−1][1,i-1][1,i−1]之间移除恰好i−aii-a_ii−ai个。那么我们从左到右扫描,记录当前可移除的最大个数sumsumsum,若i≥aii\geq a_ii≥ai且sum≥i−aisum\geq i-a_isum≥i原创 2020-11-22 14:51:26 · 248 阅读 · 0 评论 -
Codeforces Round 1264简要题解
A. Beautiful Regional Contest略B. Beautiful Sequence略C. Beautiful Mirrors with queries注意到走到一个存档点就不会回去了,于是每一段之间的期望是独立的。考虑怎么算一段的期望,不妨设只有111号和n+1n+1n+1号镜子有存档点。注意到每一轮失败后会直接返回111,根据期望的线性性,每轮之间的贡献是独立的。...原创 2020-03-31 18:06:00 · 319 阅读 · 0 评论 -
Atcoder agc038F
不知道为什么会是agc的F。考虑PPP和QQQ形成了若干个环。对于一个非平凡的环,有两种状态,即对于环上的数iii全部有Ai=iA_i=iAi=i或Ai=PiA_i=P_iAi=Pi(Pi≠iP_i\neq iPi=i)。这样可以将每个非平凡环作为一个0/10/10/1变量,而距离可以理解为对于某些PPP中的环和QQQ中的环的组合,变量同时取000或同时取111要付出111的代价。...原创 2020-03-05 22:05:47 · 272 阅读 · 0 评论 -
Codeforces 611H
简单转化一下模型,变为给定k≤6k\leq 6k≤6个集合,知道每个集合间的边的数目,要求构造一棵合法的树。注意到如果有解,一定存在一个方案,使得每个集合至多一个点不为叶子。于是有解的话一定可以从每个集合中取出一个点,构造一棵生成树,再将剩余的点连到这棵kkk个点的生成树上。由于kkk非常小,我们可以枚举这棵生成树的所有形态,只需判定是否可以将剩余的点挂到生成树上。原图中每条没有使用的边可以给...原创 2020-03-05 13:38:46 · 194 阅读 · 0 评论 -
Atcoder agc031E
考虑费用流。拆点行列模型,枚举总共选的个数kkk,理解成从小到大选匹配的kkk个横坐标和kkk个纵坐标。额外增加kkk个对应选择横坐标的点和kkk个对应选择纵坐标的点,我们可以将mmm个限制转化为对这2k2k2k个点选择范围的限制,这样可以得到一个点数为O(N+k)\mathcal O(N+k)O(N+k),边数为O(Nk)\mathcal O(Nk)O(Nk)的图,对它跑费用流即可。因为流量是...原创 2020-03-05 12:21:29 · 287 阅读 · 0 评论 -
Codeforces 708D
简单的上下界费用流。对于fi≤cif_i\leq c_ifi≤ci的边,实际流量为kkk的代价为{fi−k,0≤k<fik−fi,fi≤k≤ci(ci−fi)+2(k−ci),k>ci\begin{cases}f_i-k,0\leq k<f_i\\k-f_i,f_i\leq k\leq c_i\\(c_i-f_i)+2(k-c_i),k>c_i\end{c...原创 2019-12-06 19:17:04 · 210 阅读 · 1 评论 -
Atcoder agc037D
这题当时居然不会。。。我们显然是要让第一次行内重排后每一列内部为排列。考虑一个简单的算法,我们一列一列考虑,每次把权值和存在该权值的行找一个完美匹配即可。这个是否可行呢?注意到对于还剩ddd列的情况,任意取kkk个不同权值,恰会出现kdkdkd次,而每一行最多只剩ddd个数,因此至少会有kkk行存在这些权值之一,根据Hall定理,一定存在左部图到右部图的完美匹配。使用dinic算法的话时间...原创 2019-11-26 20:40:27 · 214 阅读 · 0 评论 -
Codeforces 704D
我写代码像cxk.jpg,因为弱智错误调了一年。不妨设r≤br\leq br≤b,我们显然希望将尽量多的点染红。构造一个行列模型,将每行每列作为一个点,每个点作为一条边,得到一个二分图,我们令一条边被流等价于该点染红。那么根据限制,可以求出每行每列染成红色的点数目的上下界。直接求一个上下界最大流即可,额外边不满流就无解。用dinic的话时间复杂度上界是O(n53)\mathcal O(n^\...原创 2019-11-11 20:56:16 · 242 阅读 · 1 评论