CSP-S 2020考前冲刺笔记

停课前

2020.10.14

P1082: 学习了扩欧,板子题

P3811: 学习了线性求逆元,板子题

ACL B: 枚举 k k k k + 1 k+1 k+1分别能被哪两个积为 n n n的数整除,然后跑几遍扩欧并取最小值即可。

2020.10.15

P3811: 学习了积性函数线性筛,换了一种方式A掉

P3455: 莫反板子题,用线性筛求了下莫比乌斯函数

CF1187E: 又水又裸的换根 d p dp dp,切掉

2020.10.16

P5676: 数学与图论建模题,它对它的倍数连边,一个 w i w_i wi e i e_i ei连边;然后直接缩点,对于每一个大小不小于 2 2 2的联通块内每个节点都可以重复经过。根据任何数都可以分解成若干个质数的乘积,我们可以优化建图。

CF1423K: 找规律题,答案为 ( n , n ] (\sqrt n, n] (n ,n]中质数的个数 + 1 +1 +1

P6812: 先挖一个性质,然后线段树维护即可。
一定要注意下传标记时的 f f f函数要打上标记

2020.10.17

P5022: 树的情况就是很水的贪心,对于基环树我们 O ( n ) O(n) O(n)枚举删边,然后使用按秩合并并查集判环之后与树的情况类似地跑一遍来更新答案。大力卡常也过不了
判是否存在环一定要用并查集,别自以为是地乱搞

P1350: 枚举在右下角的子矩阵中车的数量,然后用逆元求组合数推一下式子就完了。

P5021: 先二分,然后贪心乱搞;看到达到 m i d mid mid的链就砍一刀;否则先排序这些伸出的链的长度,接着双指针搞一搞就完了。可是不知道为什么最后 4 4 4个点一直WA

2020五校联考:

T1: 容易发现所有概率的平均值就是一次产生伤害的概率,就转换成了 n = 1 n=1 n=1的情况;然后推一推式子就能求出产生 K K K点伤害的概率,接着反面考虑用前缀和优化一下就完了……注意使用Lucas定理搞组合数,蓝。

T2: 对于每一个区间,我们从小到大去膜;然后再推一推式子,根据前缀和提出来,最后用标记永久化线段树优化一下就完了,紫。

T3: 维护一下看到当前各个数是否出现的一个数组,如果以 a i a_i ai为中心不是一个回文串就可以;然后哈希一下,由于它是动态的就上线段树来维护一波,蓝。

T4: 大力排序,分段 d p dp dp;每次根据四种走法取最小值转移即可,蓝。

T5: 二分走的路程,然后大力分类讨论线性 d p dp dp就做完了,蓝。

2020.10.18

P3805: 学习了神奇的 O ( n ) O(n) O(n)马拉车算法,自己想出了二分套哈希的 O ( n l o g n ) O(nlogn) O(nlogn)写法。

P3386: 复习了匈牙利算法,简洁了自己的代码,并且还写挂了多次,起到了很好的巩固作用。

CF620E: 本来想用线段树套数组写法,发现会MLE;于是就通过标签学会了线段树套状压的写法。时间复杂度不变,空间复杂度大幅下降。一直WA也不知道怎么回事
注意: pushdown后一定要清楚标记!

CF1387B1: 比较裸的贪心,切掉

P6722: 找到直径的中点,看看它到直径两端的距离是否都达到了 k k k即可。
注意: 由于有负边,强制用 d p dp dp求树的直径.

[RC-03]难题: 比较水的贪心。显然,对应位不同是最佳选择。所以,我们令 a = n a=n a=n b b b a a a的有效位取反的值。

[RC-03]随机树生成器: 根据期望推式子,然后线性求逆元,用前缀和维护一下就做完了。

洛谷10月月赛II:

T1: 结论题,如果 n n n为奇数每条边都能走,否则不能走 n 2 − 1 \frac n 2-1 2n1条边,减去即可。橙。

T2: 用部分分来搞正解:
①观察规律,如果 m = 0 m=0 m=0,那么答案就是 ∑ i = 1 n i + n \sum_{i=1}^n i+n i=1ni+n

②乱搞得规律,如果 m = 1 m=1 m=1,可以说成是由 n + 1 , 0 n+1,0 n+1,0通过一步操作转化而来的;所以 n , 1 n,1 n,1的答案就是 n + 1 , 0 n+1,0 n+1,0的的答案。

③提炼总结。假设没有 m = 0 m=0 m=0 m = 1 m=1 m=1的约束条件,可以发现——如果对 n n n个带圣盾的胖头鱼进行操作,就变成了 m = 1 m=1 m=1的情况;否则,我们 m m m就减去了 1 1 1,继续递归下去; m = 1 m=1 m=1为边界。

注意逆元即可。

T3: 看到题目,以为是动态 d p dp dp? 立即否认了……于是开始打 20 20 20分的小优化暴力,拿到 20 20 20分后尝试了线段树,发现思路错误。

T4: 看到题目,先通过暴力程序找出了性质,然后用莫比乌斯反演推了推式子……注意线性筛莫比乌斯函数,拿到了不错的 50 50 50分。

回去想 T 3 T3 T3,想了半个小时也毫无思路……于是就 270 270 270滚粗……

后来听了 b ruteforce \color {black} \text {b} \color {red} \text {ruteforce} bruteforce巨佬讲课,发现 T 2 T2 T2如此得简单,为啥要想 1.5 h 1.5h 1.5h……而 T 3 T3 T3是一个有套路性地解法,然后数据结构上二分就做完了。

T4是一个欧拉函数的杜教筛?但似乎莫反加上杜教筛也能过?反正严重超纲,这题听了几个字就咕了。


CF1045I: 哈希水题,切掉

停课后

2020.10.19

一回家,我妈就给我打电话,说可以查到分数了……就要了个链接,怀着忐忑的心一查……毫无悬念地过了

然后就很开心,跟老师(OI&&whk)打了个电话,说了说停课的事情;接着就开始准备复赛。

CF1426: 贪心想了想,怕有反例;就打了个暴力 O ( 9 ! × 9 ) O(9!×9) O(9!×9)的,轻松通过;写了个题解

CF638C: 树上贪心水题,切掉,写了个题解

P2512: 听说这题是《算法竞赛进阶指南》上原题,但是上一次看到这例题还是半年前……还能不忘吗……于是就不会做了,然后复习了一下,恍然大悟。顺便又切了一次均分纸牌,我不会告诉你第一次我做均分纸牌因看错题目而WA了两位数次

突然想起来还有一场ABC没看,于是就去看了……

ABC 180 E: 裸的状压,代码不写了QAQ

ABC 180 F: 挖了三个性质,感觉会做,没有想得很透彻……就走人了(搬家)

CF 1045 I突然发现UKE了?编译失败了?原来是Codeforces变成Queueforces了……重交一遍就A了,差点又一次在不知不觉中做错了一道代码正确的题

2020.10.20

LOJ #10001: 我竟然不会做……比较水的贪心题,按右端点排序,如果右端点相同按左端点排序。每次尽可能地在尾部种树;当然,例如在这个区间内一共要种 5 5 5棵树,之前已经决定种了 3 3 3棵树,那么在 r − 1 , r r-1,r r1,r各种一棵树就好了。时间复杂度 O ( n l o g n ) O(nlogn) O(nlogn)

LOJ #10002: 计算几何题……首先,我们用勾股定理找出这个圆对应的区间,按右端点排序,然后直接贪心地扫一遍就做完了。可是只有 83 83 83分,也不知道为什么,我太菜了……

LOJ #10003: 使用微扰(临项交换)推式子,可以找到贪心策略,然后直接用Johnson算法排序;最后模拟一遍就行了。

LOJ #10009: 比较水的三维 d p dp dp,不优化就能过。

LOJ #10008: 贪心,用堆维护最优决策即可。


回洛谷……

CF1045I发现UKE了?重交就AC了……惨,差点又做错了一道代码正确的题……

P1196: 由于我还对并查集不是很熟悉,就做了一道并查集的题目,题目没看完就开了题解……就是一个边带权的并查集,也没啥特别的。

P2024: 扩展域并查集的板子,发现扩展域忘了之后仍然是题目没看完就开了题解……


去CF……

由于今天晚上我要用小号打一场Div.3,所以就打了一场Div.3的虚拟赛……结果前五题不到 40 40 40分钟就切完了,然后装修,就跑到广场上去做题…… F F F的式子推出来了,就不打代码了,我真的跟鸽子差不多呢

CF620E: 之前WA了,现在改了一点,结果T了?发现自己写了个假复杂度的标记下传,改了一改,又大力卡常,各种神奇的方式都用上了……最终好不容易通过了这题。但似乎大家都没有被这题卡常,而是 1 1 1秒钟相处思路, 1 1 1分钟切掉……我怎么这么菜啊……

然后就开始看《算法竞赛进阶导论》。休息一会儿,不要马上比赛打一半睡着了QAQ

然后 D i v . 3 Div.3 Div.3死在了调试能力上,都是"一眼出思路,一秒写代码,一天调不出"这种情况……最终惨死在了第 200 200 200多名……要是再被 H a c k Hack Hack一下我就真的自闭了……

2020.10.21

做了个决定,从这天下午开始,所有题目上难度。

P3375; 学会了KMP,感谢姐姐"皎月版洒花";

LOJ #10015: 直接二分一个时刻,然后 O ( n 2 ) O(n^2) O(n2)枚举用并查集维护,最后判断一下是否为联通图即可。

CF1355E: 之前给@b6e0巨佬切掉的一个三分题,然后我看到这题,就果断选择了枚举最后变成的那个数;发现这样会超时,于是就上了三分就过了。第一次使用三分套贪心,感觉不错!

把昨天Div.3的G题的代码补了一下,为了锻炼代码能力,逼自己 10 10 10分钟内打完代码,调试完毕,提交并 A C AC AC,最终竟然成功了?看来逼一逼自己还是有用的……


从此,我只刷蓝紫黑题了。

CF734E: 没做出来QAQ——我们先对相同颜色的联通块,用并查集来进行缩点,然后此时的新树两个被一条边连的节点颜色不同,就可以跑出直径,答案就是直径长度除以 2 2 2向上取整,即从直径中点向两边’扩散"最优。时间复杂度 O ( n l o g n ) O(nlogn) O(nlogn)。我太菜了……

CF466E: 没做出来QAQ——我们离线搞,通过并查集建树,然后离线下来预处理,之后我们每次只需要查询是否在链上即可,通过"求距离"可以做到,而"求距离"又可以通过LCA来做到。写了个LCA的板子,没写挂感觉不错。我太菜了……

CF960E: 贡献题,感觉比较水,结果切掉了……爽。

然后又把KMP板子打了一遍。


之后做的题目越来越难,所以下面的就是每日的刷题笔记

10.22: 效率极高的一天的刷题笔记

猜你喜欢

转载自blog.csdn.net/Cherrt/article/details/109139276
今日推荐