首页 > 其他分享 >Codeforces 2400+ flows 大杂烩

Codeforces 2400+ flows 大杂烩

时间:2024-07-21 22:50:48浏览次数:12  
标签:二分 右边 左边 Codeforces flows 最小 2400 关键点

CF903G Yet Another Maxflow Problem

2700

关键点:最大流转最小割

显然我们需要用其他方式维护最大流,考虑到最大流等于最小割,于是我们去求最小割。

考虑这个图的特性不难发现左边和右边两列都至多割掉一条边,于是我们直接枚举割掉的位置,剩下的左边前缀和右边后缀所有相连的边都要割。

考虑维护,我们从小到大枚举左边,于是答案由右边确定,用线段树维护,每次加入一条连接两边的边就将右边的一段前缀加上这条边的容量即可。

由于只会修改左边,我们预处理完后再用线段树维护左边单点修改即可。

提交记录

CF1082G Petya and Graph

2400

关键点:最大权闭合子图

二分图,左边是边,右边是点,然后最大权闭合子图即可。难度虚高,现在已经烂透了。

提交记录

CF1263F Economic Difficulties

2400

关键点:闭合子图,最小割,虚树

首先这题相当于划分两个集合,虚树大小之和最小,用虚树经典结论 dfs 序排序后两两距离之和配合 dp \(O(n^2)\) 完事儿。有点套路。

但是网络流解法很神!

观察性质:每条边实际上管辖了一个 dfs 序区间,并且每个区间都是唯一的,如果不同树上的两个边的区间有交集,那么这两条边必须保留一个!!!

于是我们将必须保留一个的边之间连边,变成求二分图最小点覆盖。

如何证明求出的方案合法?考虑到这将是一个比较神奇的结构,管辖一个点的所有边两两连边,并且分别互相包含,这意味这我们可以调整使其全部再同一棵树上被选中。

于是我们可以二分图最小点覆盖来求,时间复杂度 \(O(n^{2.5})\) 但是跑不满。

第一种解法:提交记录

CF277E Binary Tree on Plane

2400

关键点:二分图匹配,费用流

没啥意思,二分图,如果 \(a\) 可以做 \(b\) 儿子就从左往右连边,左边容量为 1,右边容量为 2 即可。

提交记录

CF717G Underfail

2400

关键点:费用流,神仙建模

CF717G Underfail 题解

CF1198E Rectangle Painting 2

2500

关键点:性质,最小点覆盖

首先观察不难发现,每次取一行或一列肯定是最好的。

棋盘模型转化后就成了最小点覆盖,但是这题需要离散化,变成最小权点覆盖,用网络流求解即可。

提交记录

CF1070I Privatization of Roads in Berland

2400

关键点:分配资源,点边转二分图

好题。不妨考虑一个点度数是 \(d_i\),同色邻边数是 \(a_i\),则我们要求 \(d_i - a_i \le k\),也就是 \(a_i \ge d_i - k\)。

观察发现同色边最好是公共点,否则没有意义。

不妨考虑重新思考这个问题:假设有若干资源,每条边可以为两边的点之一提供一个资源,每个点有一个最少资源数,构造一种方案。

建立二分图,左边是点和需求,右边是边,跑一个最大流就可以求出来。不满流直接无解,否则构造方案即可。

提交记录

标签:二分,右边,左边,Codeforces,flows,最小,2400,关键点
From: https://www.cnblogs.com/rlc202204/p/18315093

相关文章

  • Codeforces Round 960 (Div. 2)
    xht真的好强好强,好厉害这场打得有点史,共四发罚时还是抽象了,如果没有xht就真的完了呜呜。不过也说明我是真的菜,还有把做法想出来之后验证不到位。A.SubmissionBait罚时了,15min才过/lh稍微想一下可以知道,对于最大数\(x\),若其出现次数为奇数,那么A是必胜的,反之则只能从更小......
  • [Codeforces Round 960 (Div. 2)]A-E
    CodeforcesRound960(Div.2)A-EA题意:公平博弈。给定一个数组n个数,每个数只能用一次。给一个\(mx\)。每次轮到自己操作的时候就选一个数组里的数,满足\(a[i]>=mx\),然后令\(mx=a[i]\).双方轮流做直到一方无法操作,则另一方取胜。Sol:赛时1min猜了个错解,只看最大值,只看最大值的出......
  • Codeforces Round 958 (Div. 2)
    Preface周末补题计划的最后一场,这场由于是最古早的所以有些题题意都记不太清了赛时经典发病,前四题一题WA一发,然后把时间打没了E题经典没写完(中间还抽空写了个假做法),邮电部诗人了属于是A.SplittheMultiset刚开始还感觉无从下手,写了个记搜交上去还WA了,后面发现每次分......
  • Codeforces Round 959 sponsored by NEAR (Div. 1 + Div. 2)
    Preface这场比赛的时候CF一直抽风,快10min的时候才登上去,然后中间交题也一直在人机验证50min左右过了前5题后,F没想到生成树当场趋势了,赛后发现原来是原题大战可海星A.DiverseGame将每个数循环移位变为下一个数即可,注意特判\(n=m=1\)的情形#include<cstdio>#incl......
  • Codeforces Round 958 (Div. 2)
    A.SplittheMultisetForexample, {2,2,4} isamultiset.Youhaveamultiset ......
  • Codeforces Round 960 (Div. 2)(A - D)
    CodeforcesRound960(Div.2)(A-D)A-SubmissionBait解题思路:假设直接选最大数,如果最大数有奇数个,\(Alice\)必胜,反之必败。根据这个思路,从大到小看数字,找到第一个出现奇数次的数,从它开始选,就能保证每次\(Alice\)选的时候还剩奇数个选项。代码:#include<bits/stdc++.......
  • Codeforces Round 960 (Div. 2)
    Preface周日开始补之前欠下的CF博客,这周一共有三场就按照从后往前的顺序补吧这场经典前期唐完了,前4题上来每题WA一发也是神人了,最后做到E的时候只有50min了结果还把题看错了以为树的形态都是不确定的,怀疑人生了好久感觉这个题完全没法做,后面看了眼样例才发现树的形态......
  • Codeforces Round 960(Div.2)
    CodeforcesRound960(Div.2)A从大到小去判断数字个数的奇偶性,只要出现过奇数,先手必赢,如果不出现奇数,后手必赢#include<iostream>#include<queue>#include<map>#include<set>usingnamespacestd;constintN=55;inta[N];voidsolve(){ intn; cin>>n; ma......
  • 题解:Codeforces Round 960 (Div. 2) D
    D.GridPuzzletimelimitpertest:2secondsmemorylimitpertest:256megabytesinput:standardinputoutput:standardoutputYouaregivenanarray\(a\)ofsize\(n\).Thereisan\(n\timesn\)grid.Inthe\(i\)-throw,thefirst\(a_i\)......
  • 题解:Codeforces Round 960 (Div. 2) C
    C.MadMADSumtimelimitpertest:2secondsmemorylimitpertest:256megabytesinput:standardinputoutput:standardoutputWedefinethe\(\operatorname{MAD}\)(MaximumAppearingDuplicate)inanarrayasthelargestnumberthatappearsatleast......