「Log」2023.10.16 小记
CSP 第二轮倒数 \(4\) 天。
序幕
\(\text{6:40}\):到校。
鼠标 USB 接口第一遍就对准了但还是没插进去。
整理博客,等会写 CF 题。
\(\text{7:10}\):开始写题。
\(\color{royalblue}{CF1201D}\)
因为只能从下向上走,所以就只用一行一行考虑,对于一行显著从一头走到另一头是最优的,所以记录 \(f_{i,0/1}\) 表示取完第 \(i\) 行后在左 / 右的最少行走数量,至于安全列的限制只要预处理左右最近的安全列即可。
\(\color{blueviolet}{CF346B}\)
LCS 问题基础上多加一维,记录第三个串匹配了多少,记一个 KMP 的 \(nex\) 数组即可。
\(\color{blueviolet}{CF509C}\)
贪心地,一定是从低位向高位放 \(9\) 使得一个数尽量小,在此基础上,枚举当前数字哪一位第一次比上一个数字大并且合法,最小的显然最优。
\(\color{blueviolet}{CF354C}\)
枚举公因数,找合法区间,桶前缀记一下就解决了,复杂度线性自然对数。
\(\color{blueviolet}{CF1152D}\)
贪心地,考虑偶数深度点都选最优,类似卡特兰数的递推求解即可。
间幕 \(1\)
中午点烤肉饭,虽然是烤肉饭店,但鱼丸饭真的好棒。
打了会块,打块时候一直在发抖,恰烂分。
吃完饭选择主动昏迷,睡午觉能让效率变高些,醒的时候就十四点多了,墨迹墨迹准备写题。
不一会就打完了,强制在线毁了这道题。
先是倍增的 \(fa_i\) 没清空全,调了一个多点。
然后最后发现错了以下内容(并查集预处理):
for (int i = 1; i <= n; i++)
f[i] = siz[i] = 1;
不知所云,调了一个多点,其他没错的,警钟长鸣。
\(\color{blueviolet}{P3302}\)
不考虑连边操作就简单地主席树即可,连边启发式合并就行。
连写带调 \(3.5h\)。
\(\color{blueviolet}{CF1146F}\)
DP,三种状态是显然的,只要注意转移即可,每次将一个子树合并到当前处理过的子树中。
\(\color{blueviolet}{CF1583F}\)
神仙构造题,题解塞到套题里面。
尾声
想到躺在床上酥酥麻麻的感觉一回家就睡了,虽然躺了好一会才睡着。
沉睡。