2022.07.16 zrNOI模拟赛总结
1.时间安排
8:00~8:30 看题面
T1:贪心题,暴力搜索分非常麻烦,而且题意也不是特别清楚,不是很想写……
T2:DP题,见过类似的usaco原题,不过这题难的多,有16分暴搜,剩下的分感觉拿不了。
T3:数据结构题+字符串,有14分暴力 \(n^2\),还有总询问区间长度和小于 \(4e7\) 的分可以想一想。
8:30~9:00
只是想如何求一个子串的出现次数想了很久,ac自动机爆空间,懒得写sam,最后偷懒写了hash,样例没问题。
但我的暴力复杂度是 \(n^2+qn\) 且依赖 \(n^2\),想不到怎么转化成线性的统计。
9:00~11:00
开始淦毒瘤的T2暴搜,细节多的一批,尤其是处理4个键同时按的时候。
感觉合法状态数不多,加了一些小剪枝。
在大概10:20终于写完,但答案不对。
调了半小时左右答案对了,试了极限数据居然0.02s就跑过了。
11:00~13:00
先想了想T1,还是感觉不可做,到11:30去吃饭。
吃饭回来仍然想不到T3怎么搞,就硬着头皮写T1,到结束也没写出来。
result:
T1:/ T2:16 T3:14
2.总结
T1:
神奇贪心题。
帆队暴搜剪枝打了62分,还是时间分配的不当,同样是暴搜我T2只拿了16分/kk。
题解过长,就不口胡了。
感觉这种题场上基本做不出来,一个是不会猜结论,一个是就算结论对了也不好构数据验证对拍。
多刷CFdiv2CD题可能会学到一些比较巧妙的贪心。
T2:
没看到第二档白给的 \(O(n)\) DP分,白丢了12分,直接暴力枚举三种状态转移……不能因为心态爆炸丢掉白给分啊……
不过没多少人写出来16分,可能我的剪枝比较强吧。
感觉最重要的剪枝是记录上一步的决策点,应该能剪掉不少重复状态,这些状态的决策点可能不同,但到达的终点一样,并且利用决策点位置是容易实现判重的。
正解很复杂,搞不明白。
(待upd)
T3:
J神想了个 \(n\sqrt n\) 神仙莫队%%%,可惜5e5实在跑不动。
这里简单说莫队做法,正解看不懂,J神莫队做法用到了很多以前没见过的思路。
首先可以发现,固定左端点,对于一个右端点,在这个区间的endpos相同的后缀串一定是取最短的(考虑出现次数一样且b是正数,串越短串自己的价值越小,乘积就越小),记这个右端点的答案是val。
提前建出sam并求出每个点的val,暴力的话直接在sam上匹配用匹配上的节点的val更新答案即可。
上一个子任务提醒我们往莫队上思考,但是常规莫队是做不了的,因为固定了左端点的话普通莫队左端点移动是很难处理的。
这样右端点容易移动,左端点不易移动可以考虑回滚莫队。
块右端点到询问右端点这个区间容易处理,问题在于怎么处理左端点,直接重新匹配复杂度肯定是错的。
直接在反串sam上倍增出这节点即可。
总复杂度 \(O(n\sqrt n+q\sqrt n+qlogn)\)。
和L神、J神一起聊天想出来的新题:
给定一个字符串,每次询问两个区间,回答一个区间是不是另一个区间的子串。
J神已经想出来了离线的 \(nlogn\) 做法,比较好写,可以回头实现一下。
(待upd)

浙公网安备 33010602011771号