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)

posted @ 2022-07-16 21:47  Displace  阅读(32)  评论(0)    收藏  举报