Codeforces 刷题记录(已停更)

Codeforces 每日刷题记录 (已停更)


打‘+’是一些有启发意义的题目,部分附上一句话题解,每日更新3题,大部分题目较水。


DayIDProblemTutorialNote
11+CF1073E状压,数位dp,官方题解std骚操作
\(~\)2CF1072A
\(~\)3CF1072B
24CF1072C
\(~\)5CF1068C读题恶心
\(~\)6CF1073D猜复杂度,模拟
37CF1088A
\(~\)8CF1088B
\(~\)9CF1088C构造思想
410CF1066A
\(~\)11CF1066B
\(~\)12CF1066C
513+CF1088E推结论,tree dp,贪心
\(~\)14CF1065A
\(~\)15CF1065B
616CF1064A
\(~\)17CF1064B
\(~\)18CF1064C结论
719gym102028F焦作F,模拟
\(~\)20CF1090A
\(~\)21CF1090B模拟
822+CF1090D构造
\(~\)23+CF1090Jkmp的fail树,计数,推导,树dfs,HDU5129
\(~\)24CF1065C
925CF1084A
\(~\)26CF1084B读题。
\(~\)27CF1084C
1028CF1059A
\(~\)29CF1059B
\(~\)30+CF1059C贪心构造思想
1131+CF1083Atree dp,推结论
\(~\)32CF1060A
\(~\)33CF1060B
1234+CF1083E斜率优化dp
\(~\)35CF1060C任意一个矩阵的值,相当于a的一段区间和乘b的一段区间和
\(~\)36CF1060D二分图匹配,贪心
1337CF1093A
\(~\)38CF1093B
\(~\)39CF1093C
\(~\)40CF1093D
\(~\)41+CF1093E带修改二维数点,bit套pbds / cdq / 卡内存
1442CF1051B
\(~\)43CF1051C
\(~\)44CF1051D
1545+CF1089Adp,背包,输出方案
\(~\)46+CF1093G观察可得两点之间的k维曼哈顿距离,可以通过枚举每一维的正负表示,线段数维护2^k种情况
\(~\)47CF1081A
1648CF1092A
\(~\)49CF1092B
\(~\)50CF1092C
1751CF1081B
\(~\)52CF1081C
\(~\)53CF1081D
\(~\)55+CF1092D1贪心
1854CF1081E
\(~\)56+CF1092D2贪心+线段树模拟+卡时
\(~\)57+CF1092Ftree dp
1958+CF1093F计数dp+容斥 dp[i][j]表示1到i都合法,且第i个数为j的方案数
\(~\)59CF1033A
\(~\)60CF1033B
2061CF1058A
\(~\)62CF1058B
\(~\)63CF1058C
2164+CF1092E贪心构造,将每颗树的中心(到最远点的距离最小)连成菊花图,中间是直径最大的树
\(~\)65CF1085A
\(~\)66CF1085B
\(~\)67CF1085C
\(~\)68CF1085D
2269CF1047A
\(~\)70CF1047B
\(~\)71CF1047C
2372+CF1087E搜索,边界处理,直接模拟难以实现时,要想到搜索
\(~\)73CF1041A
\(~\)74CF1041B
\(~\)75CF1041C
\(~\)76CF1041D双指针,注意更新边界
2477CF1036A
\(~\)78CF1040A
\(~\)79CF1040B
2580+CF452E插入特殊字符后拼成一个串建后缀自动机,\(right[i][id]\)表示状态i,代表的子串中,出现在\(id\)串的次数
\(~\)81CF474A
\(~\)82CF474B
2683CF1095A
\(~\)84CF1095B
\(~\)85CF1095C
\(~\)86CF1095Dn = 3时,要特判
2787CF469A
\(~\)88CF467A下一秒cf崩了,这几天真的颓
2889CF1091A
\(~\)90CF1091B
\(~\)91CF1091C
\(~\)92CF1091D
2993+CF528D字符串\(FFT\),对 于\(s\)的每个位置\(i\)的每种字符计算它的匹配数,四种字符的和如果为\(m\)则位置\(i\)可以匹配
\(~\)94+CF1091E题解
\(~\)95CF109A完全背包
3096CF1095E左括号看作1,右括号看作-1,线段树维护前缀和
\(~\)97CF1096A
\(~\)98CF1096B
\(~\)99CF1096C多边形的外接圆
31100CF1097A病了几天不会做题了
\(~\)1CF1097B
\(~\)2CF1097C
\(~\)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)\)合并即可
324CF1099A
\(~\)5CF1099B读题
\(~\)6CF1099C读题
337CF1038A
\(~\)8CF1038B
\(~\)9CF1038C
3410CF1027A
\(~\)11CF1027B
\(~\)12CF1027C贪心
3513CF950A
\(~\)14CF950B
3615CF950C贪心,线段树
3716CF954A
3817CF1101A
3918CF1101B
4019CF1100A
\(~\)20CF1100B
\(~\)21CF1100C
\(~\)22+CF1100E二分,拓扑排序。一开始发现几个DAG并起来一定可以无环,于是写了二分+拓扑排序判环,输出方案想了一个奇怪的做法,把图按编号分为几个弱联通分量,之后讨论,反向的边是在两个分量之间,还是在一个分量内。。然而直接把图拓扑排序完,然后按拓扑序连边不就行了嘛。。。awsl这段时间事儿太多了,基本没做题。。放假!
4123CF1101C
4224CF1102A
\(~\)25CF1102B
\(~\)26CF1102C
4327+CF1100F异或线性基,zkw线段树,卡常,这个做法很好想,但是卡常之路很艰辛ac代码
4428CF1009A
\(~\)29CF1009B0和2相对位置不变,1可以任意移动
4530+CF1101D类似dfs求树的直径
\(~\)31CF1101E
\(~\)32CF998A
\(~\)33CF998B
\(~\)34CF998C
4635CF1105A
\(~\)36CF1105B
\(~\)37CF1105C
\(~\)38CF1105D
\(~\)39+CF1105E最大独立集,状压,折半。参考了评论区有人提到的做法,把点分成两份,分别处理他们每种情况下的最大独集,最后合并答案,具体见代码
\(~\)40CF1104A
\(~\)41CF1104B
\(~\)42+CF1104C精准鉴别我是zz
4743CF1008A
\(~\)44CF1008B
\(~\)45CF1102D
4846CF1108A
\(~\)47CF1108B
\(~\)48CF1108C
\(~\)49CF1108D
\(~\)50+CF1108E1最终的最大值不会被覆盖
\(~\)51+CF1108E2上一题加预处理
4952CF1107A
\(~\)53CF1107B
\(~\)54CF1107C
\(~\)55CF1107D
5056+CF1108F最小生成树
\(~\)57CF864A
\(~\)58CF864B
5159CF1099D推式子,贪心
\(~\)60CF864C模拟
5261+CF786B线段树优化建图
\(~\)62CF897A
\(~\)63CF897B
5364CF897C模拟
\(~\)65CF899A
\(~\)66CF899B
5467CF1037A
\(~\)68CF1037B
\(~\)69CF1037C
5570CF1106A
\(~\)71CF1106B
\(~\)72CF1106C
\(~\)73CF1106D
5674+CF1107E区间dp,记忆化搜索,
5775CF1111A
\(~\)76CF1111B注意边界
\(~\)77CF1111C注意边界
5878CF1110A
\(~\)79CF1110B
\(~\)80CF1110C
\(~\)81+CF1110E注意操作对差分序列的影响
5982CF1114A
\(~\)83CF1114B猜结论
\(~\)84CF1114C运算爆long long
6085CF1114D区间dp
6186CF1113A在家躺几天,回归本质了
\(~\)87CF1113B读错题。
\(~\)88CF1113C
\(~\)89CF1113D细节写炸。
6290+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)\)
\(~\)91CF1117A
\(~\)92CF1117B
\(~\)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)\) 矩阵快速幂求解
6395CF1131A
\(~\)96CF1131B
\(~\)97CF1131C
\(~\)98+CF1131F倒着考虑整个过程,其实就是每次把一个区间的两个数之间切成两半,那么这显然可以构造一颗二叉树,每个非叶子节点代表切的那一刀,叶子节点表示最后这个位置的数字,那么如果我构造出了这颗二叉树,就显然可以dfs一遍输出叶子节点的值即可。现在考虑自底向上的构造这棵树,对于一个分割隔开的两个点中的任意一个,如果它已经出现了,就把这个点所在的树的根接到当前节点上,如果没有,就新建一个节点作为叶子节点,查询一个点所在树的根可通过并查集实现,复杂度不考虑并查集是O(n)的 代码然而崩了没写出来。。。当时认为直接用并查集+vector模拟合并的过程会tle,之后意识到如果每次都用小的合并到大的里,复杂度貌似是\(O(nlogn)\)
6499+CF1109E任意模数区间乘\(x\),单点除\(x\),区间求和。考虑将\(Mod\)分解,将每个\(x\)按素因子是否属于\(Mod\)分成两个集合,第一个集合是所有的属于\(Mod\)的因子,第二个集合是剩余的因子。对于第二个集合的因子,他们的乘积一定与\(Mod\)互素,因此一定存在逆元,这部分的除法可以转化为乘逆元;对于第一集合显然它的因子总数不多,所以我们对每个因子存下它的指数项,做除法时直接减去对应的指数项。考虑用线段树维护答案,每个节点维护的\(Lazy\)标记,包含集合一中每个素因子及其指数项,集合二的乘积,以及答案。需要注意的是一开始的序列我们要将他们当作\(lazy\)标记,避免做除法时出现问题。还要注意合并答案时会多次用到集合一中素数的次幂,需要将预处理出来,否则会\(Tle\)Code
\(~\)100+CF1131D建图,倒着拓扑序递推
\(~\)1CF1130A
\(~\)2CF1130B
\(~\)3CF1130C
\(~\)4+CF1130D1每次取当前节点走的最远的糖
655+CF1130D2根据上一题的结论,对于一个起点\(s\),我们考虑每个车站发完所有糖的时间,取个最大值就是答案
\(~\)6CF1023A
\(~\)7CF1023B
668CF1118A
\(~\)9CF1118B
\(~\)10CF1118C
\(~\)11CF111F1
6712+CF1129B构造
\(~\)13CF984A
\(~\)14CF984B
6815CF1118D1
\(~\)16CF1118D2
\(~\)17+CF984C判断分母\(q\),是否包含一个因子\(a\),没有出现在\(b\)内。每次从\(q\)中除去它与\(b\)\(gcd\),同时将\(b\)修改为他们的\(gcd\)\(b,q\)的下降速度都是\(log(10^{18})\),总体是一个\(log\),正确性显然。。。
6918+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
7019+CF1131E对于\(p1*p2*...*pn\)倒着考虑整个字符串乘法的过程。情况一:假设当前获得的字符串\(Now\)包含2种及以上种类数的字母,那么答案就是枚举剩余的没有成进来的串的所有字符,是否可以与\(Now\)的前缀后缀叠加更新答案。情况二:对于\(Now\)如果它是只有一种字符串考虑将它与之后的串合并,如果可以合并出一个只包含一种的串就继续合并,如果不行,计算出乘法之后的前后缀,更新答案进入情况一。注意对答案的更新
\(~\)20CF1013A
\(~\)21CF1013B
7122CF1132AA 3发过 B 2发过。
\(~\)23CF1132B
\(~\)24CF1132C
\(~\)25+CF1132F区间dp, 复杂度是\(O(n^326)\),算起来应该超时严重。。。剪剪枝,卡卡常。。最后发现主要原因是多写了一组无用的转移导致\(Tle\)出思路+写代码30min,调试+怀疑人生50min。
7226+gym102059A题解
7327CF1046C
\(~\)28CF1051A
7429CF1138A
\(~\)30+CF1138B任意等分为两组,计算两组有用人数的差值,交换不同种类的演员,将差值调整为0
\(~\)31CF1138C读题。
7532CF1137Bkmp,贪心
\(~\)33CF1133A
\(~\)34CF1133B
\(~\)35CF1133C
\(~\)36CF1133D
\(~\)37CF1133E
\(~\)38+CF1133F1排序之后,倒着\(dp\)\(dp[i][j]\)表示选了以第i个数作为左端点的区间,i到n中一共使用了j个区间的最大覆盖范围,讨论转移:一种左端点在当前区间内部,用对应右端点最远的更新,另一种左端点在外部,用这些\(dp\)值的最大值更新答案

----------- update 2019/3/10

打算之后按套题更新。。。尽量完整的补完一套题。希望能坚持下去吧。。。

ContestProblemStatusNote
Codeforces Round #545 (Div. 1)C.Museums TourAC官方题解 Code空间时间都卡满
\(~\)E. Train Car SelectionACCode操作1和操作3后,答案一定是最左端的点,答案的都容易维护。对于操作2,我们维护一个左下凸的凸壳,显然这个答案点一定在凸壳上,并且维护凸壳之上的修改操作,对于新加的点答案一定是这一段的左端点,它的实际值为0,于是我们就可以假设它上面打着修改标记,计算它应有的值,然后加入这个点。加等差数列不会改变凸壳上应有的点,我们可以在凸壳上三分,或者直接从栈弹栈顶,直到找出实际上的底部的点。
\(~\)F. Matches Are Not a Child's PlayAC题解
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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值