Codeforces 每日刷题记录 (已停更)
打‘+’是一些有启发意义的题目,部分附上一句话题解,每日更新3题,大部分题目较水。
Day | ID | Problem | Tutorial | Note |
---|---|---|---|---|
1 | 1 | +CF1073E | 状压,数位dp,官方题解std骚操作 | |
\(~\) | 2 | CF1072A | ||
\(~\) | 3 | CF1072B | ||
2 | 4 | CF1072C | ||
\(~\) | 5 | CF1068C | 读题恶心 | |
\(~\) | 6 | CF1073D | 猜复杂度,模拟 | |
3 | 7 | CF1088A | ||
\(~\) | 8 | CF1088B | ||
\(~\) | 9 | CF1088C | 构造思想 | |
4 | 10 | CF1066A | ||
\(~\) | 11 | CF1066B | ||
\(~\) | 12 | CF1066C | ||
5 | 13 | +CF1088E | 推结论,tree dp,贪心 | |
\(~\) | 14 | CF1065A | ||
\(~\) | 15 | CF1065B | ||
6 | 16 | CF1064A | ||
\(~\) | 17 | CF1064B | ||
\(~\) | 18 | CF1064C | 结论 | |
7 | 19 | gym102028F | 焦作F,模拟 | |
\(~\) | 20 | CF1090A | ||
\(~\) | 21 | CF1090B | 模拟 | |
8 | 22 | +CF1090D | 构造 | |
\(~\) | 23 | +CF1090J | kmp的fail树,计数,推导,树dfs,HDU5129 | |
\(~\) | 24 | CF1065C | ||
9 | 25 | CF1084A | ||
\(~\) | 26 | CF1084B | 读题。 | |
\(~\) | 27 | CF1084C | ||
10 | 28 | CF1059A | ||
\(~\) | 29 | CF1059B | ||
\(~\) | 30 | +CF1059C | 贪心构造思想 | |
11 | 31 | +CF1083A | tree dp,推结论 | |
\(~\) | 32 | CF1060A | ||
\(~\) | 33 | CF1060B | ||
12 | 34 | +CF1083E | 斜率优化dp | |
\(~\) | 35 | CF1060C | 任意一个矩阵的值,相当于a的一段区间和乘b的一段区间和 | |
\(~\) | 36 | CF1060D | 二分图匹配,贪心 | |
13 | 37 | CF1093A | ||
\(~\) | 38 | CF1093B | ||
\(~\) | 39 | CF1093C | ||
\(~\) | 40 | CF1093D | ||
\(~\) | 41 | +CF1093E | 带修改二维数点,bit套pbds / cdq / 卡内存 | |
14 | 42 | CF1051B | ||
\(~\) | 43 | CF1051C | ||
\(~\) | 44 | CF1051D | ||
15 | 45 | +CF1089A | dp,背包,输出方案 | |
\(~\) | 46 | +CF1093G | 观察可得两点之间的k维曼哈顿距离,可以通过枚举每一维的正负表示,线段数维护2^k种情况 | |
\(~\) | 47 | CF1081A | ||
16 | 48 | CF1092A | ||
\(~\) | 49 | CF1092B | ||
\(~\) | 50 | CF1092C | ||
17 | 51 | CF1081B | ||
\(~\) | 52 | CF1081C | ||
\(~\) | 53 | CF1081D | ||
\(~\) | 55 | +CF1092D1 | 贪心 | |
18 | 54 | CF1081E | ||
\(~\) | 56 | +CF1092D2 | 贪心+线段树模拟+卡时 | |
\(~\) | 57 | +CF1092F | tree dp | |
19 | 58 | +CF1093F | 计数dp+容斥 dp[i][j]表示1到i都合法,且第i个数为j的方案数 | |
\(~\) | 59 | CF1033A | ||
\(~\) | 60 | CF1033B | ||
20 | 61 | CF1058A | ||
\(~\) | 62 | CF1058B | ||
\(~\) | 63 | CF1058C | ||
21 | 64 | +CF1092E | 贪心构造,将每颗树的中心(到最远点的距离最小)连成菊花图,中间是直径最大的树 | |
\(~\) | 65 | CF1085A | ||
\(~\) | 66 | CF1085B | ||
\(~\) | 67 | CF1085C | ||
\(~\) | 68 | CF1085D | ||
22 | 69 | CF1047A | ||
\(~\) | 70 | CF1047B | ||
\(~\) | 71 | CF1047C | ||
23 | 72 | +CF1087E | 搜索,边界处理,直接模拟难以实现时,要想到搜索 | |
\(~\) | 73 | CF1041A | ||
\(~\) | 74 | CF1041B | ||
\(~\) | 75 | CF1041C | ||
\(~\) | 76 | CF1041D | 双指针,注意更新边界 | |
24 | 77 | CF1036A | ||
\(~\) | 78 | CF1040A | ||
\(~\) | 79 | CF1040B | ||
25 | 80 | +CF452E | 插入特殊字符后拼成一个串建后缀自动机,\(right[i][id]\)表示状态i,代表的子串中,出现在\(id\)串的次数 | |
\(~\) | 81 | CF474A | ||
\(~\) | 82 | CF474B | ||
26 | 83 | CF1095A | ||
\(~\) | 84 | CF1095B | ||
\(~\) | 85 | CF1095C | ||
\(~\) | 86 | CF1095D | n = 3时,要特判 | |
27 | 87 | CF469A | ||
\(~\) | 88 | CF467A | 下一秒cf崩了,这几天真的颓 | |
28 | 89 | CF1091A | ||
\(~\) | 90 | CF1091B | ||
\(~\) | 91 | CF1091C | ||
\(~\) | 92 | CF1091D | ||
29 | 93 | +CF528D | 字符串\(FFT\),对 于\(s\)的每个位置\(i\)的每种字符计算它的匹配数,四种字符的和如果为\(m\)则位置\(i\)可以匹配 | |
\(~\) | 94 | +CF1091E | 题解 | |
\(~\) | 95 | CF109A | 完全背包 | |
30 | 96 | CF1095E | 左括号看作1,右括号看作-1,线段树维护前缀和 | |
\(~\) | 97 | CF1096A | ||
\(~\) | 98 | CF1096B | ||
\(~\) | 99 | CF1096C | 多边形的外接圆 | |
31 | 100 | CF1097A | 病了几天不会做题了 | |
\(~\) | 1 | CF1097B | ||
\(~\) | 2 | CF1097C | ||
\(~\) | 3 | +CF1097D | 期望递推式\(E(x,k) = \frac{1}{\sigma_0(x)} \sum_{d|x}E(d,k-1)\),\(E(x,k)\)是关于\(x\)的积性函数,因此对预处理\(E(p^m,k)\)合并即可 | |
32 | 4 | CF1099A | ||
\(~\) | 5 | CF1099B | 读题 | |
\(~\) | 6 | CF1099C | 读题 | |
33 | 7 | CF1038A | ||
\(~\) | 8 | CF1038B | ||
\(~\) | 9 | CF1038C | ||
34 | 10 | CF1027A | ||
\(~\) | 11 | CF1027B | ||
\(~\) | 12 | CF1027C | 贪心 | |
35 | 13 | CF950A | ||
\(~\) | 14 | CF950B | ||
36 | 15 | CF950C | 贪心,线段树 | |
37 | 16 | CF954A | ||
38 | 17 | CF1101A | ||
39 | 18 | CF1101B | ||
40 | 19 | CF1100A | ||
\(~\) | 20 | CF1100B | ||
\(~\) | 21 | CF1100C | ||
\(~\) | 22 | +CF1100E | 二分,拓扑排序。一开始发现几个DAG并起来一定可以无环,于是写了二分+拓扑排序判环,输出方案想了一个奇怪的做法,把图按编号分为几个弱联通分量,之后讨论,反向的边是在两个分量之间,还是在一个分量内。。然而直接把图拓扑排序完,然后按拓扑序连边不就行了嘛。。。awsl | 这段时间事儿太多了,基本没做题。。放假! |
41 | 23 | CF1101C | ||
42 | 24 | CF1102A | ||
\(~\) | 25 | CF1102B | ||
\(~\) | 26 | CF1102C | ||
43 | 27 | +CF1100F | 异或线性基,zkw线段树,卡常,这个做法很好想,但是卡常之路很艰辛ac代码 | |
44 | 28 | CF1009A | ||
\(~\) | 29 | CF1009B | 0和2相对位置不变,1可以任意移动 | |
45 | 30 | +CF1101D | 类似dfs求树的直径 | |
\(~\) | 31 | CF1101E | ||
\(~\) | 32 | CF998A | ||
\(~\) | 33 | CF998B | ||
\(~\) | 34 | CF998C | ||
46 | 35 | CF1105A | ||
\(~\) | 36 | CF1105B | ||
\(~\) | 37 | CF1105C | ||
\(~\) | 38 | CF1105D | ||
\(~\) | 39 | +CF1105E | 最大独立集,状压,折半。参考了评论区有人提到的做法,把点分成两份,分别处理他们每种情况下的最大独集,最后合并答案,具体见代码把 | |
\(~\) | 40 | CF1104A | ||
\(~\) | 41 | CF1104B | ||
\(~\) | 42 | +CF1104C | 精准鉴别我是zz | |
47 | 43 | CF1008A | ||
\(~\) | 44 | CF1008B | ||
\(~\) | 45 | CF1102D | ||
48 | 46 | CF1108A | ||
\(~\) | 47 | CF1108B | ||
\(~\) | 48 | CF1108C | ||
\(~\) | 49 | CF1108D | ||
\(~\) | 50 | +CF1108E1 | 最终的最大值不会被覆盖 | |
\(~\) | 51 | +CF1108E2 | 上一题加预处理 | |
49 | 52 | CF1107A | ||
\(~\) | 53 | CF1107B | ||
\(~\) | 54 | CF1107C | ||
\(~\) | 55 | CF1107D | ||
50 | 56 | +CF1108F | 最小生成树 | |
\(~\) | 57 | CF864A | ||
\(~\) | 58 | CF864B | ||
51 | 59 | CF1099D | 推式子,贪心 | |
\(~\) | 60 | CF864C | 模拟 | |
52 | 61 | +CF786B | 线段树优化建图 | |
\(~\) | 62 | CF897A | ||
\(~\) | 63 | CF897B | ||
53 | 64 | CF897C | 模拟 | |
\(~\) | 65 | CF899A | ||
\(~\) | 66 | CF899B | ||
54 | 67 | CF1037A | ||
\(~\) | 68 | CF1037B | ||
\(~\) | 69 | CF1037C | ||
55 | 70 | CF1106A | ||
\(~\) | 71 | CF1106B | ||
\(~\) | 72 | CF1106C | ||
\(~\) | 73 | CF1106D | ||
56 | 74 | +CF1107E | 区间dp,记忆化搜索, | |
57 | 75 | CF1111A | ||
\(~\) | 76 | CF1111B | 注意边界 | |
\(~\) | 77 | CF1111C | 注意边界 | |
58 | 78 | CF1110A | ||
\(~\) | 79 | CF1110B | ||
\(~\) | 80 | CF1110C | ||
\(~\) | 81 | +CF1110E | 注意操作对差分序列的影响 | |
59 | 82 | CF1114A | ||
\(~\) | 83 | CF1114B | 猜结论 | |
\(~\) | 84 | CF1114C | 运算爆long long | |
60 | 85 | CF1114D | 区间dp | |
61 | 86 | CF1113A | 在家躺几天,回归本质了 | |
\(~\) | 87 | CF1113B | 读错题。 | |
\(~\) | 88 | CF1113C | ||
\(~\) | 89 | CF1113D | 细节写炸。 | |
62 | 90 | +CF1109D | 计数。题意:求给定两点之间的边权和为\(m\),总点数为\(n\)个的树的个数。做法: 固定两点之间边的数目\(e\),挑出\(e\)个点的方案数为\(A_{n-2}^{e-1}\),这条链上的边权和为\(m\),利用隔板法可知方案数为\(C_{m-1}^{e-1}\),其余的边的边权都可以任意设定,因此方案数为\(m^{n-e-1}\),最后还需要的就是,其余的点以链上的点为基础构成的森林的方案数。根据Cayley's formula的一般形式,可知点集\(\{ 1,2,..,n\}\) 构成的森林,且其中\(\{1,2,...,k\}\)属于不同的树,的方案数\(T(n,k) = kn^{n-k-1}\),证明。因此答案可表示为 \(\sum _{e=1}^{min(n-1,m)}A_{n-2}^{e-1}C_{m-1}^{e-1}m^{n-e-1}T(n,i+1)\) | |
\(~\) | 91 | CF1117A | ||
\(~\) | 92 | CF1117B | ||
\(~\) | 93 | +CF1117C | 对于每个a[i],找到最小的经过的周期数k,解不等式,答案一定在交点附近,讨论正负,验证 | |
\(~\) | 94 | +CF1117D | 答案等价于\(\sum_{i} C_{n-im}^i\),手推几组可以发现\(m=2\)时答案为\(Fib(n)\),然后发现\(dp(n) = dp(n-1) + dp(n-m)\) 矩阵快速幂求解 | |
63 | 95 | CF1131A | ||
\(~\) | 96 | CF1131B | ||
\(~\) | 97 | CF1131C | ||
\(~\) | 98 | +CF1131F | 倒着考虑整个过程,其实就是每次把一个区间的两个数之间切成两半,那么这显然可以构造一颗二叉树,每个非叶子节点代表切的那一刀,叶子节点表示最后这个位置的数字,那么如果我构造出了这颗二叉树,就显然可以dfs一遍输出叶子节点的值即可。现在考虑自底向上的构造这棵树,对于一个分割隔开的两个点中的任意一个,如果它已经出现了,就把这个点所在的树的根接到当前节点上,如果没有,就新建一个节点作为叶子节点,查询一个点所在树的根可通过并查集实现,复杂度不考虑并查集是O(n)的 代码然而崩了没写出来。。。当时认为直接用并查集+vector模拟合并的过程会tle,之后意识到如果每次都用小的合并到大的里,复杂度貌似是\(O(nlogn)\)? | |
64 | 99 | +CF1109E | 任意模数区间乘\(x\),单点除\(x\),区间求和。考虑将\(Mod\)分解,将每个\(x\)按素因子是否属于\(Mod\)分成两个集合,第一个集合是所有的属于\(Mod\)的因子,第二个集合是剩余的因子。对于第二个集合的因子,他们的乘积一定与\(Mod\)互素,因此一定存在逆元,这部分的除法可以转化为乘逆元;对于第一集合显然它的因子总数不多,所以我们对每个因子存下它的指数项,做除法时直接减去对应的指数项。考虑用线段树维护答案,每个节点维护的\(Lazy\)标记,包含集合一中每个素因子及其指数项,集合二的乘积,以及答案。需要注意的是一开始的序列我们要将他们当作\(lazy\)标记,避免做除法时出现问题。还要注意合并答案时会多次用到集合一中素数的次幂,需要将预处理出来,否则会\(Tle\)。Code | |
\(~\) | 100 | +CF1131D | 建图,倒着拓扑序递推 | |
\(~\) | 1 | CF1130A | ||
\(~\) | 2 | CF1130B | ||
\(~\) | 3 | CF1130C | ||
\(~\) | 4 | +CF1130D1 | 每次取当前节点走的最远的糖 | |
65 | 5 | +CF1130D2 | 根据上一题的结论,对于一个起点\(s\),我们考虑每个车站发完所有糖的时间,取个最大值就是答案 | |
\(~\) | 6 | CF1023A | ||
\(~\) | 7 | CF1023B | ||
66 | 8 | CF1118A | ||
\(~\) | 9 | CF1118B | ||
\(~\) | 10 | CF1118C | ||
\(~\) | 11 | CF111F1 | ||
67 | 12 | +CF1129B | 构造 | |
\(~\) | 13 | CF984A | ||
\(~\) | 14 | CF984B | ||
68 | 15 | CF1118D1 | ||
\(~\) | 16 | CF1118D2 | ||
\(~\) | 17 | +CF984C | 判断分母\(q\),是否包含一个因子\(a\),没有出现在\(b\)内。每次从\(q\)中除去它与\(b\)的\(gcd\),同时将\(b\)修改为他们的\(gcd\),\(b,q\)的下降速度都是\(log(10^{18})\),总体是一个\(log\),正确性显然。。。 | |
69 | 18 | +CF1129C | \(unoldered\_set\)大法好!给定一空串s,长度\([1,4]\)的\(26\)个\(2\)进制电码,代表不同的字母,每次在\(s\)后添加一个\(0\)或\(1\),问当前的串\(s\),及其子串可以表示多少种不同的转码后的字符串。首先,对于长度不同的\(01\)串,一定不可能被转成相同的字符串,对于一个固定的\(01\)串,两种不同的合法分割方法一定可以构成不同的转码后的串。因此,对于\(01\)串中每个区间\(dp\)预处理这个区间有多少种合法的划分,\(F(l,r)\)表示区间\([l,r]\)的合法划分方案数,对于长度相同的串,\(hash\)判重,统计答案即可。一开始\(set\)超时了,\(unolder\_set\)差\(4ms\)超时,艰难卡过去了。。。Code | |
70 | 19 | +CF1131E | 对于\(p1*p2*...*pn\)倒着考虑整个字符串乘法的过程。情况一:假设当前获得的字符串\(Now\)包含2种及以上种类数的字母,那么答案就是枚举剩余的没有成进来的串的所有字符,是否可以与\(Now\)的前缀后缀叠加更新答案。情况二:对于\(Now\)如果它是只有一种字符串考虑将它与之后的串合并,如果可以合并出一个只包含一种的串就继续合并,如果不行,计算出乘法之后的前后缀,更新答案进入情况一。注意对答案的更新 | |
\(~\) | 20 | CF1013A | ||
\(~\) | 21 | CF1013B | ||
71 | 22 | CF1132A | A 3发过 B 2发过。 | |
\(~\) | 23 | CF1132B | ||
\(~\) | 24 | CF1132C | ||
\(~\) | 25 | +CF1132F | 区间dp, 复杂度是\(O(n^326)\),算起来应该超时严重。。。剪剪枝,卡卡常。。最后发现主要原因是多写了一组无用的转移导致\(Tle\)的 | 出思路+写代码30min,调试+怀疑人生50min。 |
72 | 26 | +gym102059A | 题解 | |
73 | 27 | CF1046C | ||
\(~\) | 28 | CF1051A | ||
74 | 29 | CF1138A | ||
\(~\) | 30 | +CF1138B | 任意等分为两组,计算两组有用人数的差值,交换不同种类的演员,将差值调整为0 | |
\(~\) | 31 | CF1138C | 读题。 | |
75 | 32 | CF1137B | kmp,贪心 | |
\(~\) | 33 | CF1133A | ||
\(~\) | 34 | CF1133B | ||
\(~\) | 35 | CF1133C | ||
\(~\) | 36 | CF1133D | ||
\(~\) | 37 | CF1133E | ||
\(~\) | 38 | +CF1133F1 | 排序之后,倒着\(dp\),\(dp[i][j]\)表示选了以第i个数作为左端点的区间,i到n中一共使用了j个区间的最大覆盖范围,讨论转移:一种左端点在当前区间内部,用对应右端点最远的更新,另一种左端点在外部,用这些\(dp\)值的最大值更新答案 |
----------- update 2019/3/10
打算之后按套题更新。。。尽量完整的补完一套题。希望能坚持下去吧。。。
Contest | Problem | Status | Note |
---|---|---|---|
Codeforces Round #545 (Div. 1) | C.Museums Tour | AC | 官方题解 Code空间时间都卡满 |
\(~\) | E. Train Car Selection | AC | Code操作1和操作3后,答案一定是最左端的点,答案的都容易维护。对于操作2,我们维护一个左下凸的凸壳,显然这个答案点一定在凸壳上,并且维护凸壳之上的修改操作,对于新加的点答案一定是这一段的左端点,它的实际值为0,于是我们就可以假设它上面打着修改标记,计算它应有的值,然后加入这个点。加等差数列不会改变凸壳上应有的点,我们可以在凸壳上三分,或者直接从栈弹栈顶,直到找出实际上的底部的点。 |
\(~\) | F. Matches Are Not a Child's Play | AC | 题解 |
Codeforces Round #544 (Div. 3) | F2. Spanning Tree with One Fixed Degree | - | |
Educational Codeforces Round 61 (Rated for Div. 2) | D. Stressful Training | - | |
\(~\) | E. Knapsack | - | |
\(~\) | G. Greedy Subsequences | - |