Codeforces 图论板刷总结(更新中)

图论太菜了呀,那怎么办呀,刷点题吧,写下来可以以后复习?或者造福后人?这blog估计也没什么用?
大概就从这开始刷吧:Link

786B 区间图最段路

没啥好说的,标准的区间图最短路,建议整理板子。我的板子:Link

741C 构造题 二分图

很容易被搞到2-sat上去,但是猜到一定有解的情况下, 构造出二分图就做完了。我反正智商是没了。

567E 最短路DAG必经边

可以通过方案数来确定一条边是否必经,最好双模,曾经被卡过QAQ。简单题。

527E 欧拉回路

首先容易想到要先把每个点的度数补成偶数,这是必要的。然后这个条件就让人想到存在欧拉回路,然后构造答案:如果回路长度是奇数,增加一个自环,变成偶数。偶数则直接给边按照左右左右这样定向就做完了。我反正智商又没了。
大概就是把欧拉回路类比成简单环去考虑吧,这样就比较容易想到这样构造了?

1147D 建图 划分等价类

首先要枚举a的位数,因为a前边那些0是不参与回文的。将a,b的每一位取0,1分别建一个点,总共4n个点,然后回文,异或这两个条件会产生一些等价条件,使用并查集维护。然后还有一些值已经确定了,比如b首位是1,a前边若干个0,然后有一位是1,在检查完合法性之后,剩下的自由元可以任意取值,答案就是一个2的幂次。
有点类似于2-sat吧,但是因为这里是等价关系(双向边),就比较简单了。数自由元需要用到图是对称的。

724D 图 线性基

这个题比较套路。。有三个要素:无向图,路径长度定义为异或和,不必要简单路径。
这三个东西导致了一个套路:两点间的所有路径的值可以由任意一条路径的值,再经过任意的环组合。那我们只需要将所有的环的路径值加入到线性基里面,就可以轻松处理答案了。
而环是不可能全找出来的,但是由于一个环可以由其他的环组合出来,且要维护的是异或基,因此只需要找到一些基环(基向量),让他们足够来组合(张成)出所有的环(向量)即可。

1023F 生成树 思维

给边定值的时候,边的考虑顺序不会影响答案。
(原图只需要保留一个mst)证明:假设有两条虚线的边是我们的边,红色蓝色紫色都是原树的边,现在想要同时加入这两个虚线边。首先显然加一条边的时候,需要把这个边的值定为树上路径上的最小值,同时删掉树上那个最小的边。
那么只需要讨论两条路径上要删掉的那个最小边的位置,很容易就能证明。
在这里插入图片描述
由于输入已经排好序了,直接并查集。

571C 建图 定向 思维

一些预处理是很简单的:如果一个变量只出现了 a a a或者只出现了 ∼ a \sim a a,则可直接确定这个变量的取值,然后将该合取式删除,这会导致一些新的变量出现上边这样的情况,所以要跑一个拓扑排序。
剩下的就只有每个变量在一个合取式中是 a a a,在另一个合取式中是 ∼ a \sim a a,显然这个 a a a变量只能使得一个合取式得到满足,因此我们在这两个合取式间连一个边,我们要做的是给边定向,使得每个点都至少有一个入度,显然树是非法的(只有n-1个边,只能满足n-1个合取式),其他都是合法的,任意找一个环,然后先把环定向,其他的就搞一个基环外向树。
题目中每个变量至多出现在两个合取式的条件,已经明示了做法,想到建图就做完了。

627D 二分 DP

二分+DP,有一些细节需要仔细讨论一下。

85E 二分 染色

最大值最小,直接二分答案,然后在不满足条件的点之间连边,然后要求这个图可以二染色,直接dfs走一遍check就行,一个连通块方案数为2,因此总方案数是 2 c o m p o n e n t 2^{component} 2component.

542E 推理

容易从三元环发现只要存在奇数长度的环,则一定是-1,这等价于判断能否二染色。
然后这个题很重要的东西就是环了,容易观察到一些结论:1如果有多个连通块,则答案是各个连通块的和,2如果是一棵树,答案就是直径,3长度为2n的裸环答案是n(对折)。再分析一下就能发现:以任意两点为链的端点,链长将等于这两点的最短路,因为他是最短的,没办法附体到其他的链上。然后就做完了。

141E 拟阵推理

先求只用S边的生成森林,然后再加入一些M边,变成一棵树,这些M边是必选的。
然后重新再来一次,先加入必选的M边,然后再加入一些M边,使得M边总数达到一半。
之后再尝试加入所有S边,即得到答案。
严格证明要用拟阵推。
所以我为什么乱搞谢了个 随机边权+wqs二分??仿佛一个睿智。

266D 直接做

开始想到很多骚操作,但是你画一个环就能全否掉,基本都用了树的性质,不能推广到一般图。
这题就是找图的绝对重心(我看其他博客是这么叫的?) 做法肯定是枚举每一条边 ( u , v , w ) (u,v,w) (u,v,w),求这条边上的答案。很不幸,答案没有三分性质。设重心点和 u u u的距离是 L L

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值