图论
mayaohua2003
这个作者很懒,什么都没留下…
展开
-
Codeforces gym 102822 简要题解
博主诈尸啦!来更点cf题解。A. A Colorful Grid分类讨论鬼题。先考虑一下最后的网格图的连通性。我们考虑某一个连通块,如果存在某个连通块外的点与连通块内至少两个点相邻,或者至少两个连通块外的点与连通块内某个点相邻,那么连通块都能继续扩大。这样容易发现,最终可能的连通块一定要么是横着切成若干块,要么是竖着切成若干块,当然也可以是整个网格图完全连通。接下来我们的算法是枚举每一类情况,看看是否能构造出解,如果均不行就无解。如果整个网格图完全连通。不妨设n≤mn\leq mn≤m,若n≤2n\原创 2020-11-22 08:09:40 · 773 阅读 · 0 评论 -
Codeforces Round 1361 简要题解
A. Johnny and Contribution略B. Johnny and Grandmaster略C. Johnny and Megan’s Necklace略D. Johnny and James显然原点发出的各条射线上选择方案可以分别考虑。考虑对于某条射线上的mmm个点按到原点的距离考虑,距离分别为d1<d2<⋯<dmd_1<d_2<\cdots<d_md1<d2<⋯<dm。注意到若第iii个点被选择且是射线上从远到近第原创 2020-06-14 09:12:59 · 568 阅读 · 0 评论 -
Codeforces Round 1307 简要题解
A. Cow and Haybales略B. Cow and Friend略C. Cow and Message略D. Cow and Fields略E. Cow and Treats注意到两边牛吃的范围不能相交,并且因为不能跨越,所以两边分别不能选喜好相同的牛。然后可以发现一个方案合法当且仅当分界点两侧的牛忽略其他奶牛可以吃饱(因为可以按要吃的草距离从大到小的顺序安排牛去吃)。那么就很简单了。考虑枚举左侧牛吃到的最右的草iii,此时每种喜好的奶牛就独立了,可以分别做一个简单的贪心和计数原创 2020-05-31 22:49:19 · 335 阅读 · 0 评论 -
Codeforces Round 1320 简要题解
A. Journey Planning略B. Navigation System略C. World of Darkraft: Battle for Azathoth略D. Reachable Strings注意到操作是可逆的,于是可以考虑将两个串分别操作到终态,判断终态是否相同。显然如果′0′'0'′0′的个数不相同一定非法,否则考虑每次操作后,′0′'0'′0′的位置的奇偶性不变,...原创 2020-04-29 12:42:14 · 392 阅读 · 0 评论 -
Codeforces Round 1338 简要题解
A. Powered Addition略B. Edge Weight Assignment略C. Perfect Triples找找规律容易发现答案跟四进制相关。考虑将数字写成四进制,容易观察并归纳证明:所有匹配的(a,b,c)(a,b,c)(a,b,c)位数都相同,并且位数相同,最高位为111,222和333的数字分别会作为aaa,bbb和ccc出现,互相匹配,且aaa从小到大取遍所...原创 2020-04-17 23:00:19 · 419 阅读 · 0 评论 -
Codechef April Challenge 2020 简要题解
这次的题目难度比较高,有一做的价值,不过照例没有challenge的题解。Strange Number略Squared Subsequences略Ready Bitwise略Perfect Power Divisors写下式子发现显然是个容斥,令F(i)F(i)F(i)表示∑i=2⌊Nk⌋(i⋅⌊Nik⌋)\sum_{i=2}^{\lfloor \sqrt[k] N \rfloor...原创 2020-04-17 21:55:17 · 697 阅读 · 0 评论 -
Codeforces Round 1305简要题解
A:略B:略C:略D:略E:考虑选择合适的kkk,先填111到kkk,补一个k+1k+1k+1到2k2k2k之间的数凑出mmm,剩下部分补上很大的数。#include <bits/stdc++.h>using namespace std;int sum[100005],id[100005];int f[10005];int main() { int n,m;...原创 2020-03-07 14:24:14 · 279 阅读 · 0 评论 -
Codeforces 528C
由于自环存在,讨论得比较繁琐。先随便给边定向,根据每个节点的入/出边数目奇偶性可以分为444种情况,其中(0,1)(0,1)(0,1)和(1,0)(1,0)(1,0)的点数奇偶性相同。对于(0,1)(0,1)(0,1)或(1,0)(1,0)(1,0),必须增加至少111条连到它的边,我们让它们两两匹配即可。这样只剩(0,0)(0,0)(0,0)和(1,1)(1,1)(1,1),由于翻转一条两端为...原创 2020-03-05 22:27:56 · 259 阅读 · 0 评论 -
Codeforces 590E
终于会证明dilworth定理了。。。定义一个字符串a≤ba\leq ba≤b当且仅当aaa是bbb的子串,显然≤\leq≤是一种偏序关系。那么问题转化为求出最长反链。首先需要知道字符串间的偏序关系。将所有字符串建出AC自动机并求出fail树,就容易知道每个字符串有哪些字符串为其子串。不过暴力做需要跳整条fail链,注意到子串关系有传递性,于是我们只记录每个点fail链上能跳到的最近的字符串,...原创 2019-12-10 22:46:03 · 348 阅读 · 0 评论 -
Codeforces 587D
给一个愚蠢做法。考虑每种颜色的边构成的子图。显然有某个点度数>2>2>2无解,于是每个连通块只能是环或链。对于环,如果是奇环显然无解,偶环的话里面每个点都必须用到(已经被用到也无解),直接取两种情况较小的即可。对于链,非两个端点的点都必须用到(否则也无解),如果链的边数为奇数,可以额外用到两个端点,可能得到更小的答案,如果为偶数,必须恰好多用一个端点,得到两个方案。考虑二分答...原创 2019-12-06 22:47:39 · 199 阅读 · 0 评论 -
Atcoder agc032C
这题是个大讨论题。因为图连通且每条边恰经过一次,所以三个环可以拼成一个欧拉回路,因此可以尝试从欧拉回路的角度考虑。原图必须存在欧拉回路,有奇点显然无解。有度数≥6\geq 6≥6的点一定有解(任取一条从该点出发的回路,至少经过该点333次,每次即为一个环)。否则若度数全为222或仅有一点度数为444显然无解。还可以发现若存在至少333个度数为444的点也一定有解(设三个点为A,B,C,同...原创 2019-12-01 16:00:22 · 353 阅读 · 0 评论 -
Codeforces 568C
先特判掉没有元音或辅音的情况。我们考虑按位贪心,先尽可能的最大化答案跟sss的LCP长度,枚举第一个比sss大的位后后面就可以随便选了(对于每个位只用枚举比它大的最小的元音或辅音)。因为既有元音又有辅音,我们判定的时候只需要确定每个位是元音还是辅音即可。判定的过程显然是一个2−sat2-sat2−sat。求出来后还要贪心确定后面的位是取元音还是辅音,类似做就行了。时间复杂度O(nm)\math...原创 2019-12-01 15:20:56 · 268 阅读 · 0 评论 -
Codeforces 639F
问题实质是给定无向图,每次询问加入一些边后某些点是否都在同一个边双内。考虑先把初始图的边双缩起来得到一个森林,那么对于每个询问,有用的显然只有加入的边以及询问点所在边双的虚树上的点,直接构出虚树后再跑一遍tarjan判断即可。强制在线有点坑,一开始解密还写错了。时间复杂度是O((n+m+q)logn)\mathcal O((n+m+q) \log n)O((n+m+q)logn)。#in...原创 2019-11-05 22:44:28 · 238 阅读 · 0 评论 -
Codeforces 555E
比较简单的题。考虑一个边双,我们可以巧妙给边定向让它变成一个强连通分量。做法是搞个dfs树,树边从父亲往儿子,非树边从儿子往父亲,容易证明这样一定合法。于是我们可以把边双缩起来得到一棵树,问题就变成给树边定向,这个随便判一下就好了。#include <bits/stdc++.h>#define FR first#define SE second using namespa...原创 2019-11-03 21:53:28 · 224 阅读 · 0 评论 -
Codeforces 538H
先特判掉全部划分到一个集合的情况,接下来只讨论存在两个集合的。我们取一个右端点最小的区间为AAA,一个左端点最大的区间为BBB(AAA和BBB可能相同)。我们的限制可以分为两部分。第一部分是划分的两个集合各自人数的交非空,注意到当存在三个互不相交的区间是显然无解,否则如果存在互不相交的区间,AAA和BBB一定不相交,于是会分在不同集合,那么可以确定一些其他区间的分法(与AAA或BBB在同一集合...原创 2019-11-26 21:59:55 · 268 阅读 · 0 评论 -
Atcoder arc093E
考虑先不管染色,任意求出原图的一棵MST,设为TTT。这个可以用经典的kruskal算法解决。我们称生成树TTT的权重和为w(T)w(T)w(T)。若w(T)>Xw(T)>Xw(T)>X,显然一定无解。接下来我们假设w(T)≤Xw(T)\leq Xw(T)≤X。那么对于一个染色方案,若TTT中同时有两种颜色的边,那它本身就是符合题意的生成树中权重和最小的之一。显然当且仅当w...原创 2019-11-20 23:22:38 · 458 阅读 · 0 评论