Codeforces 刷题记录(已停更)

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 -

转载于:https://www.cnblogs.com/RRRR-wys/p/10099078.html

你可能感兴趣的:(Codeforces 刷题记录(已停更))