Processing math: 100%

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)xE(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个点的方案数为Ae1n2,这条链上的边权和为m,利用隔板法可知方案数为Ce1m1,其余的边的边权都可以任意设定,因此方案数为mne1,最后还需要的就是,其余的点以链上的点为基础构成的森林的方案数。根据Cayley's formula的一般形式,可知点集{1,2,..,n} 构成的森林,且其中{1,2,...,k}属于不同的树,的方案数T(n,k)=knnk1证明。因此答案可表示为 min(n1,m)e=1Ae1n2Ce1m1mne1T(n,i+1)
  91 CF1117A
  92 CF1117B
  93 +CF1117C 对于每个a[i],找到最小的经过的周期数k,解不等式,答案一定在交点附近,讨论正负,验证
  94 +CF1117D 答案等价于iCinim,手推几组可以发现m=2时答案为Fib(n),然后发现dp(n)=dp(n1)+dp(nm) 矩阵快速幂求解
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标记,避免做除法时出现问题。还要注意合并答案时会多次用到集合一中素数的次幂,需要将预处理出来,否则会TleCode
  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中除去它与bgcd,同时将b修改为他们的gcdb,q的下降速度都是log(1018),总体是一个log,正确性显然。。。
69 18 +CF1129C unoldered_set大法好!给定一空串s,长度[1,4]262进制电码,代表不同的字母,每次在s后添加一个01,问当前的串s,及其子串可以表示多少种不同的转码后的字符串。首先,对于长度不同的01串,一定不可能被转成相同的字符串,对于一个固定的01串,两种不同的合法分割方法一定可以构成不同的转码后的串。因此,对于01串中每个区间dp预处理这个区间有多少种合法的划分,F(l,r)表示区间[l,r]的合法划分方案数,对于长度相同的串,hash判重,统计答案即可。一开始set超时了,unolder_set4ms超时,艰难卡过去了。。。Code
70 19 +CF1131E 对于p1p2...pn倒着考虑整个字符串乘法的过程。情况一:假设当前获得的字符串Now包含2种及以上种类数的字母,那么答案就是枚举剩余的没有成进来的串的所有字符,是否可以与Now的前缀后缀叠加更新答案。情况二:对于Now如果它是只有一种字符串考虑将它与之后的串合并,如果可以合并出一个只包含一种的串就继续合并,如果不行,计算出乘法之后的前后缀,更新答案进入情况一。注意对答案的更新
  20 CF1013A
  21 CF1013B
71 22 CF1132A A 3发过 B 2发过。
  23 CF1132B
  24 CF1132C
  25 +CF1132F 区间dp, 复杂度是O(n326),算起来应该超时严重。。。剪剪枝,卡卡常。。最后发现主要原因是多写了一组无用的转移导致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 排序之后,倒着dpdp[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 -
posted @   RRRR_wys  阅读(1692)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示