图论太菜了呀,那怎么办呀,刷点题吧,写下来可以以后复习?或者造福后人?这blog估计也没什么用?
大概就从这开始刷吧:Link
简单题解
- 786B 区间图最段路
- 741C 构造题 二分图
- 567E 最短路DAG必经边
- 527E 欧拉回路
- 1147D 建图 划分等价类
- 724D 图 线性基
- 1023F 生成树 思维
- 571C 建图 定向 思维
- 627D 二分 DP
- 85E 二分 染色
- 542E 推理
- 141E 拟阵推理
- 266D 直接做
- 825G 拓扑排序 贪心
- 241E 差分约束 输出方案
- 8E 数位DP
- 1209F Dij最短路+字典树比字典序
- 346D SPFA
- 480D DP
- 132E 最小费用流:DAG的某种带权覆盖?
- 358E 欧拉路径
- 311C 最短路
- 813F 时间线段树 + 可撤销带权并查集
- 1218D 仙人掌 + FWT
- 45H 树补成边双
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