2023.3.1 4题模拟赛总结

久违地打了一场4题模拟赛,被橄榄了。

1.时间安排

7:30~8:30

T1:结论+模拟,对于左端点有唯一匹配右端点,直接线性预处理就可以 \(O(1)\) 询问。

T2:感觉像是最优化DP题,有爆搜分和给出区间不交的分,直觉能建森林贪心。

T3:最优化问题,很像之前做的[HEOI2016/TJOI2016]排序,感觉利用这个二分类似的处理这道题,但看不出来是数据结构维护贪心还是DP。

T4:数据结构题,给出若干回文区间可以用并查集来表示,感觉所有修改在询问前可以用[SCOI2016]萌萌哒的套路用ST表维护并查集,对正解暂时没想法。

先写了T1,有一些细节调了一会,因为输出量实在太大而且是字符串,试了若干种输出选择最优(然而是printf最优)。

8:30~9:40

把T2的爆搜写了,所有的小样例能过。

然后把建森林的贪心写了,细节非常多,主要在于父亲是不需要考虑必须设置一个的限制,还有空隙也可以放数字,调了很久过了样例。

9:40~10:30

浅想了一下,感觉每次找极长的合法段去增广就是对的,一开始写的是 \(O(n^3logn)\) 的做法,能过掉样例,优化一下就变成了 \(O(n^2logn)\)

10:30~12:00

先写了T4的暴力,写着写着意识到正解需要支持每次把区间内需要合并的并查集合并,更新字符串hash值,合并的时候启发式一下可以做到 \(O(nlogn)\),修改可以用任意 log 数据结构所以修改复杂度可以做到总体为 \(O(nlog^2n)\),查询直接在线段树上查就好,复杂度单次 \(O(logn)\)

但是关键在于如何找到需要合并的并查集,想了很多办法都不行,无奈只能从修改都在询问前入手。

然后开始魔改ST维护并查集,调到比赛结束才意识到并查集根的颜色是不能作为标记下传的,ST表不能支持标记下方,寄。

result:

T1:92 T2:12 T3:50 T4:20

2.总结

T1:

看错数据范围了,以为需要模拟的都是 \(\sum{r-l+1}\leq 1e6\),改一下就过了。

俯卧撑 * 10。

T2:

暴搜没有考虑没有被任意区间覆盖的数字,挂了。

区间不相交确实是贪心,但是细节非常多,一个是dfs序最后的叶子只需要放1个而不是像其他叶子放满,还有一些是边界的细节就不详细展开了。

没看出来是差分约束,区间的限制可以表达为两个前缀和至少差1,至多差 \(lim\),直接二分最大值 \(lim\) 用差分约束判断就可以做第一问,复杂度 \(O(logn * spfa())\)

差分约束有点遗忘,找些题练练。

有了差分约束后,因为跑的是单源最短路,所以跑出来的解一定满足靠前的前缀和最大(或者调整一下也可以)。

差分约束有不少细节,需要考虑没有被覆盖的区间是不能选任何数的,需要特判加入0边,而且为了保证代表 \(s_0\) 的点不被其他点更新,需要建立超级源点,同样加入0边就可以了。

构造方案相当毒瘤,首先需要考虑没有被任何区间覆盖的位置,要把这些位置剔除掉。

然后考虑末尾的若干元素像区间不相交的最后的叶子一样是可以删去一部分的,同学有单次判断是否可以删除 \(O(logn)\) 复杂度的做法,不过我发现可以做到 \(O(n)\) 预处理归并查询做到删除 \(O(1)\),具体的求出左端点最大的区间内最小的点,求出这个bound后就可以把bound之后的元素暴力删除,喜提最优解。

T3:

相当毒瘤的DP题。

第一步还是采用二分。

首先可以发现如果操作会对数组产生变化,那么最多操作 \(logn\) 次后一定有解,证明考虑每次 \(1\) 的数量至少翻倍。

容易发现做的一系列操作可以是不断扩大两端点的区间,所以设计 DP 状态 \(f_{i,j}\),表示做了 \(i\) 次操作,上一次操作的结尾在 \(j\) ,上一次操作最远的合法左端点。

可以很容易写出 \(O(n^3logn)\) 的 DP 式。

通过观察发现可以维护前缀max更新,复杂度降为 \(O(n^2logn)\),总复杂度为 \(O(n^2log^2n)\)

可以用线段树优化,但是线段树需要支持对一个数组做前缀max,两个数组求和,线段树上二分。

摆了摆了,留给 AKIOI 的 Cafard 。

T4:

直接用维护出的hash值线段树可以二分+hash找到两个区间hash值第一个不同的位置,就是需要被合并的并查集,这样找需要合并的并查集可以做到均摊 \(O(nlogn)\)(我已经维护出hash值线段树了都没有让他发挥该有的作用)。

用二分+hash找不同位置是字符串题常用的逃课方法,思维僵化没有往这道题上想。

posted @ 2023-03-01 21:12  Displace  阅读(8)  评论(0)    收藏  举报