发过博客的这里就不写了。另外方便起见搞成一个栈。
12.27
前段时间阳了,什么都不想干,结果半个月都没写题,真能摸啊。
Codeforces Round #841 (Div. 2) and Divide by Zero 2022
本来是场很傻逼的比赛,结果我想了一下没想出 E 和 F 咋做就摆了。。最后队友教会了 E,但是 F 没仔细想就摸了,最后看到插值俩字立刻就会了,太摸了。
下次态度还是应该端正一些,不然这样做 CF 也很难有什么进步。
直到今天才学会 Min25 筛,真是惭愧……
12.11
我是甄姬拔菜啊。。
典中典虚树题了,最简单的做法是建虚树之后两次 DFS 求出上边和下边最近的点,然后枚举边算贡献。
边的两端是不算的,但是代码里没有处理好“下端刚好是距离相等的位置”这个情况。
写之前还是要搞清楚边界怎么搞,不然写对拍也太浪费时间了。
重新写了一遍还是用了半小时。主要是写之前还是没想清楚,一边写一边想很浪费时间,也容易错。
另外比如输出格式这种东西就应该写之前就想明白,不要写到这个部分再现想。
关于 WF 的失利,我觉得主要责任肯定在我,这显然是无法推脱的。
12.10
这两天又懒起来了,果然是三分钟热度。还是要重振精神一下。
一个 vector 维护 bitset 的小技巧。卡了很多次的原因有两个,一个是对 vector 归并的时候边界没判好,一个是建操作树的时候没处理好撤销操作。
很经典的 AC 自动机了,本来想练练手,结果偷懒写倍增 LCA 被卡空间了,逆天……
平常自然无所谓,不过比赛或者训练的时候写之前记得算一下内存。比如这个 AC 自动机,如果不用倍增 LCA 的话最好不要以 0 为根,所以写之前就要算好到底写哪种,避免后面大改。
12.8
以前觉得这个题很难,结果现在看一眼就会了,感觉像个傻逼题。。
用最小表示法维护一下 5 个点的连通性就行了,转移的时候用并查集判一下。注意到要求的是生成树,所以连边之前要判一下是不是已经连通了。
12.6
看起来状态很多,实际上最小表示法状态也就不到两万个,用最小表示法就好了。
暴力所有状态实际上没有必要(主要是太慢了),可以只在 DP 的时候把碰到的状态存一下。
12.5
L
很简单的贪心,因为如果只能用反链的话答案就是最长正链,所以直接每次贪心删掉最长的重链。
A
验题的时候想了个 rope,然后被卡常了。。
实际上用一个持久化线段树维护一下区间 swap 就行了,因为只有 swap,可以保证要交换的部分的结构始终是一样的。
洛谷P5056 【模板】插头 DP
这种寄吧逻辑很多的题恰好是我所欠缺的,尤其是插头 DP,以往每次碰见都只能放了。
明天写一下神秘的生物。
12.4
有的人只有栽了一跤之后才知道痛定思痛……
VP 了一下,把傻逼题都做了。
G 和 K 没做出来是真的逆天,G 就是纯模拟的签到题,K 没想到因为所有数非负所以直接 FFT 就行了,不存在逆序对的问题。
UPD:才知道 G 是因为理解错题意了,每次放人是尽量多的放,而不是 0 ~ k 个都有可能。。虽然出题人也有责任,但确实怪我理解的有点奇怪了。
5.21
乐,快俩月没更新过了,真能摆啊都。
ICPC2021昆明J Just Another String Problem
挺傻逼的,后缀数组+线段树夏寄吧搞搞就行了。问题是好久不写代码了,在傻逼错误上卡了好久。
ICPC2021昆明E Easy String Problem
我真是焯了,什么诈骗题,ybb。
4.1
最近是真的能摸,根本没动力写题。。
一道其实很简单的单调栈,但是训练的时候神志不清了,甚至不知道怎么处理第一项的问题。
3.16
用分治维护区间转移的 DP,注意我的写法需要特判长为 1 的区间,不然转移不过去。
(因为这个小 bug 查了好久,太 SB 了)
3.4
线段树维护历史和,但是实际上还没有完全搞懂,有空要再看看。
3.3
很裸的三维偏序优化 DP,但是要特判一个元素都没留下的情况,因为直接 DP 是以至少有一个数留下的前提来做的。
2.25
其实是很 SB 的题,但是训练和补题的时候都脑抽了。实际上“寻找 $x$ 之后第一个 $pre \ge s$ 的数”是可以直接用线段树搞的,而不是傻傻的开个树状数组套 set。
2.16
好懒……似乎好久没更新过了,虽然这段时间也不是没做过题。
后面做题的时候就补上吧,毕竟按理说 ICPC 生涯还有九个月。
11.21
CCPC-final 2019 C G
11.19
一个裸的本质不同子串的统计,建出后缀数组然后求height就行了。
注意题目中不考虑有前导0的子串,所以求和的时候如果开头是0就跳过。
11.18
一个简单的单调队列,但是注意用vector开单挑队列时要多开几个元素(因为是手写队列,tail的位置理论上不应访问)。
写了一个很暴力的分治并查集,然后果不其然被卡内存了。
正解也挺简单,因为修改的数递增,所以每个连通块都是先加点再删点,删点的过程反过来然后并查集扫一遍就行了。
感觉没什么细节,就不写了。