2025/07/25 东师

模拟赛

genius

简单题,考虑 \(\sum^n_{i=1}a_i\mod k=\sum^n_{i=1}a_i-k\sum^n_{i=1}\lfloor \frac{a_i}{k}\rfloor\)

所以 \(sum-s\) 一定为 \(k\) 的倍数,枚举因数暴力即可。

场上错误在于枚举因数暴力的暴力竟然写挂了...

magic

二分答案是一定的,贪心过程可以把 \(a\) 由大向小考虑,过程类似扫描线。

我们把 \(b\) 丢进一颗平衡树里做就可以。

key

先看部分分,40pts 是容易的,钦定一个点为根后,每个点按目标树深度排序向上放,这样保证了它放上时,它的全部父亲已经就位(介于只能移动一次的限制)。

考虑 100pts 比 40pts 多了什么,答案是钦定了一个不动点,那我们大可以枚举哪一个点动,先动再跑,因为数据足够小,可以通过。

考场上挂了的原因是读题出错,没看到只能移动一次。

hollow

绝世好题。

首先考虑怎么样才能让它变得尽量优,因为最后答案是一段类似 \(00000001111111111\) 的形式,我们枚举分界点,这样 \(a_i=0\) 的贡献是 \(1\) 反之则 \(-1\),我们要去最大子段和。

完了考虑上修改,这题最精妙的地方就来了,问题变成选出 \(k\) 段不相交的区间,要求子段和最大,我们返回贪心。

用线段树维护最大子段和,每次选出来就把正负反转,这样再选就能够给他反悔掉。我们需要一颗维护 \(7\)\(tag\) 的线段树。

字符串

先只说题。

P8819

我们需要的是每个点出度 \(1\) ,但是题目操作注定了我们只能维护入度,怎么办。

所以我们把每个边到达点序列哈希起来,给一个随机权值就好。

P5410

扩展 \(kmp\),比起 \(kmp\),更像 \(maracher\) 思想

P8023

题目要求求出在字典序最小的新序列,考虑如何保证字典序最小。

首先当前局面,我们肯定会选择两个序列中字典序较小的那个元素放进新序列。

排名小实际上是预知了接下来谁会更早的解救出字典序小的元素,当前局面选谁都一样,就要考虑选了谁,能快速获得字典序小的元素。

二分hash维护

posted @ 2025-07-25 21:02  2019yyy  阅读(8)  评论(0)    收藏  举报