清华营模拟赛 5.12

赛时时间安排

读题8:00-8:20

对题目的第一感觉:

T1 启发式合并

T2 表面和善,实际非常复杂的计数

T3 又一道奇怪的字符串题

T1

今天几乎整个上午都用来肝T1了。

8:20-9:50 捋顺思路+码T1花了约一个小时,码完后才发现和第二个样例拍不上,之后确认自己理解错题意了,心态有点小崩

10:00-10:30 总算捋顺了题意

10:30-10:50 码完了暴力,终于答案对了

10:50-11:00 电脑怎么还是基本没网啊,只能换电脑交题

11:00-11:30 码完了启发式合并

11:30-11:45 调完了启发式合并

11:45-12:00 T2的10pts和T3的30pts都不是剩下的时间能打完的,无奈等掉分

赛后总结反思

1.这种题意费解的题一定要多手动模拟几组小数据再开码

2.T1最后赛场上码的基本上就是正解,和正解相差的地方除了一个给左移打标机的trick外,要格外注意的是如果要给一个函数传较大的东西进去(例如本题中的set)时,尽量加取地址符,否则传值会非常慢

3.T3其实是SAM中比较简单的一道题,但依然没有敏锐地察觉做法,SAM还是做得太少

T1

启发式合并,直接模拟题意,每个节点维护一个set,然后由size小的向size大的里面合并。

对于本题涉及的两种操作(求和,取MAX),对于求和,均摊下来是\(O(\log ^2 n)\)的,但一旦加上取MAX(相当于对一个set整体左移)的话,复杂度便得不到保证,因此不能直接左移,而改为维护左移次数的标机。

另外要注意上面提到的如果要给一个函数传较大的东西进去(例如本题中的set)时,尽量加取地址符否则传值会非常慢

T3

SAM的直接应用。

考虑每次向右/向左其实可以分别转化为跳到儿子节点/Parent tree节点上,因为每次向右/向左走后,一直继续走到儿子节点/Parent tree节点为止,一定是最优的(因为endpos集合的大小一直没有变化)。因此可以按照拓扑序分别向儿子节点/Parent tree节点累积贡献。

posted @ 2021-05-12 20:13  Robert_JYH  阅读(67)  评论(1编辑  收藏  举报