20260225 模拟测 总结
Preface
AK 人数怎么成倍降低了 orz
但是我凭什么要罚坐两个小时啊喵!!!摸鱼好无聊(哭
关于老师讲题的时候我瞄到了榜单但是发现(当时的)前十多名都没有我然后吓死了以为自己挂完了后来才知道没评测完这件事。。。
T1
| 估分 | 得分 | 挂分 |
|---|---|---|
| \(100\) | \(100\) | \(0\) |
今天 T1 怎么是恐怖模拟题,原地吓死。
我们只需要按照题意循环模拟即可,注意最顶上和最底下分别有一行 +---------------------+ 以及一位数和二位数不同的排版方式等等各种细节即可。
T2
| 估分 | 得分 | 挂分 |
|---|---|---|
| \(100\) | \(100\) | \(0\) |
小清新题目,但是我怎么写了一坨。
由于这个题目的输入非常的恶心虽然人眼看上去很舒服但是计算机处理起来特别烦,所以我就先把里边的数字提取出来变成一个标准的 \(9 \times 9\) 二维数组然后按照题意所述去判重即可,注意小心别判断到空格了。
T3
| 估分 | 得分 | 挂分 |
|---|---|---|
| \(100\) | \(100\) | \(0\) |
我们注意到嘎嘎喵之前做过这道题,当然这已经是一年多以前的事情了(在我还没有蓝钩的时候!远古时期啊)。可是为什么我今天一开这个 T3 我就很确定以及肯定我做过这道题啊??我的记性没好到那个地步吧???
一个星期前刷的题我都能忘,一年前做的题我记得一清二楚,试问我的记性是什么随机算法。
咳咳,扯远了。这个题目显然非常的 DP,我们考虑 DP,定义 \(dp_{i,j}\) 表示当前考虑了 \(a\) 数组的前 \(i\) 项以及 \(b\) 数组的前 \(j\) 项时最小的最大值是多少。
显然有初值 \(dp_{i,j} = \infty\) 但 \(dp_{0,0} = 0\)。最终结果即为 \(dp_{n,m}\)。
考虑转移。显然一个 \(dp_{i,j}\) 可能是从 \(dp_{i-1,j}\) 或 \(dp_{i,j-1}\) 两个位置转移过来的,我们只需要根据上一个 DP 值与当前 \(i/j\) 对应的 \(a/b\) 数组内的值的奇偶性来判断转移时是 \(+1\)(奇偶性不同)还是 \(+2\)(奇偶性相同)即可。
然后就做完了。
T4
| 估分 | 得分 | 挂分 |
|---|---|---|
| \(100\) | \(100\) | \(0\) |
你说得对,但是嘎嘎喵今天又搬出了一个和大家的做法以及正解不同的东西神神秘秘地过掉了这道题。对我写的 ST 不过大家都写的单调队列。
被单调队列了 /bx /bx /bx
不管了!就多一个 \(\log\) 影响很大吗!而且核心逻辑是一样的只是采取的实现方式不同嘛。
注意到,我们只需要先对每个 \(a_{i,j}\) 建立 \(a'_{i,j}\) 使 \(a'_{i,j} = \max_{j \le k < j+s} \{ a_{i,k} \}\),再针对每个 \(a'_{i,j}\) 建立 \(a''_{i,j}\) 使 \(a''_{i,j} = \max_{i \le k < i+r} \{ a_{k,j} \}\),最终 \(a''\) 数组即为题目所求答案。
如何在时限内达到这个目标?我们需要的是一个能够在 \(O(n)\)(或 \(O(n \log n)\))时间复杂度下求出一列 \(n\) 个数字中所有长度为 \(p\)(其中 \(p\) 为常数)的区间数值 \(\max\) 的算法,显然 ST 和单调队列都能够实现这个要求。然后做就完了。
ST 的时间复杂度是 \(O(n^2\log n)\) 的,单调队列的时间复杂度是 \(O(n^2)\) 的,此处忽略常数并视作 \(n=m\)。真的,在 \(4\)s 的时限下它俩一点问题都没有好嘛……到底是谁说 ST 过不去啊?!?!
Summary
嗯对又 AK 了一场。
只是今天罚坐了太久 >^<
后面几天多 AK 几场好嘛 qwq!
继续加油喵 /fendou

浙公网安备 33010602011771号