2023.2.11 省选模拟赛总结
1.时间安排
7:30~8:30
T1 DP,T2 数据结构,T3 字符串
先把T2的50分暴力和固定询问左端点 \(l=1\) 的李超线段树写了,对正解没什么想法,李超线段树不熟悉调了比较久。
8:30~10:00
T3 是让求不去重字典序前 \(k\) 大的子序列,联想到 SAM 上求前 \(k\) 大子串的题,想着能不能类推到子序列自动机上,一开始错误地认为子序列自动机每个点表示的状态也是类似 SAM 的 endpos 集合的东西,写了很久过不了自己造的数据才想起来子序列是不存在 endpos 的那一套理论的,假的很彻底,1h+打水漂。
10:00~11:00
写了T1的暴力,手推了一下链的情况,写了自己认为正确的结论,但是忽略的链的方向性,应该维护首尾两个变量,但是大样例很水,也没对拍,挂了。
对正解没想法。
11:00~12:00
突然发现 T3 直接基排似乎过不掉,卡了卡常数,之后想T1,但是没想法。
result:
T1:30 T2:50 T3:20
2.总结
T1:
暴力记搜就是对的,复杂度 \(O(m^3)\)。
场上T3把心态搞炸了,冷静下来订题30min左右就写完过了……
常规场还是要按顺序开题,按擅长开题就容易被难题搞崩心态。
T2:
离线数据结构题,仔细想想应该是能场切的,但是细节比较多也不一定。
让询问是 \((l,r)\),元素(就是单调栈求出的结果)是 \((a,b)\),对于 \(l\leq a \leq b\leq r\) 和 \(a\leq l \leq r\leq b\) 两种包含的形式可以二维数点数最大值求出,复杂度 \(O(nlogn)\)。
接下来就是形如 \(a\leq l \leq b\leq r\) 的形式,另一种完全对称可以翻转做。
此时仍考虑二维数点,按右端点排列,不同的是数的是李超线段树上维护的线段,可以 cdq 做,也可以直接上可持久化李超线段树(李超树不是均摊的复杂度,可以可持久化,吉司机是均摊的不行,类似的还有splay)。
因为李超树常数很小所以即使可持久化了也跑的很快,复杂度 \(O(nlog^2n)\)。
T3:
高科技字符串。
先说暴力:类似超级钢琴的思路,维护前 \(k\) 大,不断取出最大的然后再塞入 \(k\) 个由最大的转移出的新元素,在本题中用堆维护可以做到 \(k^3logk\) 左右的复杂度。
正解考虑维护若干前缀,然后在子序列自动机上计算几个前缀那些能拼出前 \(k\) 小的串,也就是计算他们对应的后缀集合大小,剩下的就可以全部扔掉,复杂度外层均摊 \(O(k)\),里层需要用主席树实现的子序列自动机,复杂度 \(O(log|V|)\),加上搭建自动机总复杂度为 \(O((k+n)log|V|)\)。

浙公网安备 33010602011771号