2022.07.01 NOI模拟赛总结
1.时间安排
7:40~8:00 看题面
T1:求树上子树加叶子不同色覆盖最小代价方案的构造题,看上去不太能做的样子,有30分状压枚举和若干特殊性质分。
T2:求子串最大hash值,而且题目说数据随机,可能有什么奇怪的性质,有30分 \(n^2\) 枚举。
T3:多源bfs求所有点的深度和,一眼看上去只会12分暴力模拟,n=2, x_i=0这些数据可能有什么特殊性质。
8:00~8:40
先写了T2的 \(n^2\) 枚举,然后写了T3的暴力模拟。
看了一会T3的特殊性质,用暴力打了n=2的表,没看出什么明显的规律,不过感觉是个分段等差数列的形式。
8:40~10:20
一开始连暴力都没想好怎么写,后来发现只要按找二进制去子树加一定不会出现重复颜色,直接 \(2^n*n\) 即可。
构造题居然不发spj,自己用了10几分钟手写了一个,但是仍然没法随机数据对拍(不知道构造出的方案价值是否最小),只能自己手构了一些小数据验证。
然后把菊花的分类讨论写了,大样例没问题。
之后想了很久树只有两层的分数,发现了一些小性质:
1. 一个非叶节点只能覆盖一个子树内的叶子。
2. 如果之前在子树内有一个叶子被他在子树内的祖先节点覆盖,那么当前节点只能选择是否覆盖之前的祖先节点。
3. 每个子树的问题互相独立,不受影响。
这样的话只需要从叶子往上合并最大值,同步更新是否作为候选点的标记即可。
已经可以知道选出那些点,问题来到了怎么用这些点构造方案。
一个非叶节点只能支配一个叶子,而且这个叶子具体是谁并不影响,只需要叶子在他的子树内即可。
于是贪心标记就可以构造合法方案了。
写完后用小数据对拍没问题。(因为太激动忘了造极端数据测试,还好没出问题……)
10:20~10:40
想着T2数据随机可能是有单调性这类的?打了表什么都没有,思考了很久没想明白随机数据有什么特点,跳T3(应该这时候写个暴力或者随机化骗分,但是想着T3可能很快推出来规律没写,埋下伏笔)。
10:40~12:05
继续就这刚开始打的表推规律,发现确实是两段等差数列求和,一段是16,一段是8。
两段数列的值很好求,关键在于他们的交界处很难处理。
一顿打表分析发现和横纵坐标差最大值有关,而且似乎还和奇偶性有关,还与最小值与最大值的差等等有关……
尝试了很久终于把坐标差最大值时奇数的情况推出来,暴力验证没问题。(到这里大概已经11:30了)
然后继续推偶数情况的规律,一直到考试结束也没推出来。
result:
T1:100 T2:30 T3:20
2.总结
T1:
%J神树形dp。
虽然我的set也是正确的,但是无法记录方案,无法通过这题。
还有一种做法是拆成差分数组后用最小生成树求解,也比较妙。
T2:
妙题。
随机化居然是答案大概率不低于 \(m-m/n^2\) (m为答案上界,n为字符串长度),第一次听说这个结论
后面的hash转化也很妙。
设我们当前要检验的答案为 \(x\) ,如果存在 \(l<r\),满足 \(s_r-base^{r-l}s_l=x\),则此答案合法。
等式两边同时乘 base^{-r},移项可以得到 \(base^{-r}s_r-base^{-r}x=base^{-l}s_l\),这个式子两边下标分别独立,就可以用hash表做到 \(O(n)\) 检验了。
T3:
根本没往扫描线上想,用矩形面积并容斥就能过K<=5e4的12分。
正解考虑矩形面积并显然是个二次函数,于是求出来3个点值就可以拉插了。

浙公网安备 33010602011771号