退役前的做题记录
2023.1.25
loj502
经典的倍数随机题。
这种什么某种颜色的出现次数是 umap
都可以通过。
2023.1.26
CF1792F
学习了在线卷积。
就首先一定能知道的是,它要算的是正图和补图之间的一些关系。所有情况都该是一一映射,去掉全涂这种特殊不合法情况之后,那么感觉就是要算答案
第一种是直接递推式出发,这是个典型的在线卷积。而在线卷积的做法是,考虑已经算完了
第二种是考虑 GF, 注意到牛迭是完全可行的,时间复杂度
第三种是拉反,我们重温一下拉反的形式。
设
一阵推导,就是要求
一通操作即可。时间复杂度
ARC154F
学了个小技巧。
考虑还剩
我们要求这个 GF 的
那么会得到
这是分治 FFT 容易算出来的,此刻我们就有了
将其拆出来,得到
而
这也是分治 FFT 模拟通分过程容易求出的,时间复杂度
2023.1.27
loj3275
挺麻烦的一道简单题。
容易注意到双向边构成的连通块是团,团是可以缩点的,因为团里每个点的后续情况将会是一样的。那么接下来就是维护连通块合并的过程,我原本想着直接维护 out_size
来计算,发现大的团就无法更新了。合理的做法是用 set
直接维护真实的点,这样更新时就不会算重了。注意到一条边可能构成很多连通块合并,所以要递归下去计算。时间复杂度
CF1613D
挺简单的一道 dp 题。
注意到一个序列的合法性只与末尾、
CF833B
简单的线段树优化 dp。
容易知道区间统计颜色数的方法是记录
CF490F
有好多做法的一道题。
上来容易想到线段树合并,也即整体 dp。但由于要维护两棵线段树我就没写这做法。
将答案写进状态,把序列末尾的数写进 dp 值后,状态的第二维就不会超过高度了。于是可以长链剖分。
两者时间复杂度都是
CF1156F
为什么这种签到题都有
一眼
2023.1.28
CF1758D
当时没想出来哎。
1 | namespace MAIN { |
2022 Shenyang
题解在队伍训练总结中。
2023.1.29
loj3280
点分治模板题。
注意到题意等价于选出若干颜色的点集,使得它们构成连通块。如果我们枚举某一个颜色属于点集,则一路暴力扩展可以知道答案。但这样的复杂度不对,所以我们需要去优化枚举连通块的过程,这个过程就用点分治来优化。点分治的原理是枚举一个点,然后只考虑当前连通集中包含该点的连通块。利用重心,我们可以保证每次连通集大小减半,所以只有
大学来第一次写点分治,泪目。
另外一个角度来看,树分治就是将序列的分治搬到了树上,实际上对应我们平时的对半分治来看,边分治更加相似。点分治则是每次分出若干个区间,保证了最大的是二分之一,从而保证了分治结构的高度。于是当序列分治可做的问题,搬到树上就基本上也可做了。
2023.1.30
近期因为要读论文,所以做题量就大幅度减少了。
Codeforces Round #847 (Div. 3)
唯一值得一提的是 E 题中,可以发现对于一棵
2023.2.1
验了一场 div2。
2023.2.3
整理了下过去打过的比赛。