「Log」2023.12.4 小记
序幕
今天是国家宪法日。
\(\text{6:40}\):准时到校,整理博客。
今天真的是不怎么冷呢。
上午还是先刷刷杂题,随机开题。
假串串题。
考虑线段树维护哈希,每个节点维护区间子串哈希值,解决了单点修改的问题。
匹配是不正确的,于是乎不会了。
这个东西复杂度貌似也是假的。
看题解。
原来忽略了一些重要信息……
首先串 \(e\) 长度不超过 \(10\),其次字符集大小只有 \(4\)。
\(\color{blueviolet}{CF827C}\)
好题。
\(1 \le |e| \le 10,|\sum| = 4\),考虑从这几点下手。
首先每个字符可以分开考虑,然后对于每个长度,每个匹配的字符位置开一个树状数组。
本质上是判断同余位置的字符相等个数,也就是对于每种字符,每个模数,每个余数开一个树状数组,总计 \(400\) 个,空间允许。
\(\color{blueviolet}{CF842E}\)
简单题。
先最小生成树一下,分别考虑树边与非树边的答案,设一个边为 \((u, v, w)\)
非树边的答案是平凡的,即树上 \(u, v\) 路径上边权取最大值再减一。
树边的答案考虑增大到某一时刻一定会被某条较小的非树边取代,所以考虑非树边从大到小路径覆盖即可(取最小值减一)。
特别地,某条边没被覆盖到那也就是必选边,答案为 \(-1\)。
间幕 \(1\)
午休是美好的。
不饿所以没咋吃饭,吃完饭把四月补完了,评价是神仙番。
没有疲倦感,于是接着开题,感觉是没啥水平的简单分讨。
\(\color{blueviolet}{CF832D}\)
细节还是有点水平的。
对于一个询问枚举三种情况是显著的,设 \(x, u, v\) 三点表示重复点与令两点。
对于 \(u, v\) 在 \(x\) 子树内或不在的情况进行分类处理。特别地,两者都不在的时候考虑 \(LCA(x, u)\) 与 \(LCA(x, v)\) 是否相等,剩下的是平凡的。
\(\color{blueviolet}{CF842E}\)
神仙题。
主要用到一个性质,多条直径一定至少交于一点或一条边。
考虑一个交点,将直径分为两段,这两段长度可能一样可能不一样(与直径长度奇偶性相关),只需考虑不一样的情况。
设两段端点集合为 \(s1, s2\),每次加入一个点 \(i\),跟两集合内任意一点求距离设为 \(d_1, d_2\)。若 \(d_1, d_2\) 其中一个能更新直径,以 \(d_1\) 为例,那么 \(s_2\) 中的点可能失效,考虑其不失效的充要条件为 \(dis(x, i) = d_1\) 其中 \(x \in s_2\),现在这样的点符合 \(s_1\) 的条件,加入 \(s_1\) 即可,然后清空 \(s_2\)。
每次模拟上述过程,输出两集合大小之和即可。
\(\color{blueviolet}{CF838D}\)
更加神仙的题!
考虑所有情况中合法的概率,假设每个人随机指定位置随机走,将 \(1 \sim n + 1\) 连成环,其中 \(n + 1\) 是增加的位置,此位置是起点,若绕一圈并占据了此节点说明此方案不合法。
结论是所有位置等价,所以占据 \(n + 1\) 的概率为 \(\frac{m}{n + 1}\),合法概率即 \(\frac{n + 1 - m}{n + 1}\),乘以总方案数 \(2 ^ m (n + 1) ^ m\) 即答案。
结论不知道怎么证明,但感性理解挺正确的。
间幕 \(2\)
忘了什么时候吃的晚饭了。
晚饭后摆了一会,挑不到想写的题,被推荐了一道神仙交互。
思考无果,主要限制次数太神秘了,没什么思路。
看题解,果然很神秘。
思路大体上是不断扩充最优前缀同时进行剪枝。
\(\color{black}{CF1466I}\)
考虑用队列维护最优前缀,每次加入一个数并尝试扩展一位,不优就舍掉。
下一步从队尾向队首计算,不优就弹掉整个队列后缀。
第一步计算是冗余的,不必判断是否相等,因为在第二步会处理劣解。
用 string 以及内置函数可以大大减小实现难度。
尾声
瓶颈期好难受,写博客复习罢。