「Log」2023.11.29 小记
序幕
又是冷得不想动的一天。
\(\text{6:40}\):准时到校,整理咕掉的博客。
今天写杂题,开题开题。
随机找到 CF449D,感觉先反求+容斥,但要预处理状态贡献,这个东西不会求。
本质上可以看做高维前缀和,然后就会了,虽然花了大量时间理解这个前缀和是怎么不重不漏记录贡献的。
\(\color{royalblue}{CF449D}\)
首先考虑总方案数减去不合法方案数,枚举 \(1\) 的个数进行容斥。
于是需要求 \(val_{st}\) 表示包含状态 \(st\) 的数一共有多少个。
现在设状态 \(a \supsetneq b \supsetneq c\),并且 \(a\) 状态比 \(b\) 状态在 \(x\) 位上多 \(1\),\(b\) 比 \(c\) 在 \(y\) 位上多 \(1\)。
考虑 \(a\) 的贡献加到 \(c\) 上的方式,先去掉 \(x\) 和先去掉 \(y\) 的贡献路径是等价的,所以我们钦定先去掉较小的位,这样不会重复。
间幕 \(1\)
短暂的休息,上个厕所,保洁阿姨把走廊弄得都是八四味。
回来接着开题,想了一会直接就昏迷了。
睡到了 \(\text{10:10}\),起床之后接着想。
只有一个暴力 DP 的想法,不知道有啥好优化的,于是看题解。
题解预处理了神秘的东西。
我的思路瓶颈在于一位一位匹配,题解直接一个串一个串匹配,是优异的。
我直接提前午休,中午点了牛约堡,店家配送,慢的一批。
中午闲聊加休息。
墨迹墨迹就快两点了,不行不行赶紧写题!
十分钟速通掉一道。
\(\color{royalblue}{CF476E}\)
考虑删除一些位一定是为了匹配成一个串,否则杂乱的删除一定不优。
设 \(g_i\) 表示以 \(s_i\) 为开始字符要向后匹配到哪里可以出现一个完整的串 \(p\)。(可以不连续的,在 DP 过程中考虑删除其中的无用字符。)
设 \(f_{i, j}\) 表示当前匹配到串 \(s\) 的第 \(i\) 位,删除了 \(j\) 个字符最多能匹配完成的次数。
转移是简单的,要么继承之间的值,要么从当前位向后寻找一个串完成匹配。
间幕 \(2\)
开了一道,感觉见过,随便套个结论上去就切了,没啥水平。
发现博客部分做的有点 bug,简单修一下。
\(\color{royalblue}{CF455C}\)(\(\color{blueviolet}{P2195}\) 双倍经验)
没啥水平题。
考虑两棵树连起来一定是将两棵树直径中点连起来,然后直径构成是显然的三部分,直接维护即可。
连通性的话放一个并查集即可。
间幕 \(3\)
被叫出去考了个会考,物理实验但完全没试验。
速通之后就回来开下一道题,想了一会感觉套个二分直接就能做了。
\(\color{royalblue}{CF732D}\)
考虑直接二分答案,然后取出每个科目最后的考试时间,这样考试表固定,就可以贪心判断。
值得注意的是,很有可能某一科目在过程中没有出现。
间幕 \(4\)
小颓一会,结果提前进入晚休。
晚上吃的不多,但吃完又昏迷了。
我要冬眠了。
接着随机开题,感觉会了,瞄一眼题解感觉没太大问题,打完就过了。
\(\color{royalblue}{CF799C}\)
分类讨论,首先是一种买一个,直接取最大就行,考虑同种买两个的情况。
处理一个 \(f_i\) 表示用至多 \(i\) 元钱买一个得到的最大、次大价值,然后枚举钦定要买的物品,用剩余的钱买最优的即可。
\(\color{blueviolet}{CF487B}\)
没啥水平。
暴力 DP 是显著的,可以用单调队列维护区间最值,有决策单调性所以双指针维护当前点和决策点。
尾声
回家挑了道题写。
写完了就颓一颓,吃了个宵夜。
冬眠。