QD MX 模拟赛记录

📅 2026/7/21 21:26:58 👁️ 阅读次数 📝 编程学习
QD MX 模拟赛记录

题目列表

Day2

CF1082C Multi-Subject Competition

对每个科目的人降序排序,做前缀和之后对每一列再降序排序。

不难发现这样做刚好就是答案。

P14154 [ICPC 2022 Nanjing R] 索道 / gym104128B Ropeway

和 zxh_qwq 拼起来就能过掉了。

对前缀 DP,\(f_i\) 表示选择 \(a_i\) 的最小代价,对后缀 DP,\(g_i+a_i\) 表示选择 \(a_i\) 的最小代价。

这个 DP 直接用单调队列优化即可。

不难发现每次修改都只会影响后 \(k\) 个位置,重算后 \(k\) 个位置的 \(f\) 值,和 \(g\) 拼起来就能得到答案。

QOJ7749 一个简单的 MST 问题 / gym104813D A Simple MST Problem

首先考虑 \([l,r]\) 中存在质数的情况。

不难发现只有边权为 \(\omega(x)\)\(\omega(x)+1\) 的边才是有用的,直接和区间内的质数连边代价就不会超过 \(\omega(x)+1\)

\(x\) 的质因数和为 \(f(x)\),质因数乘积为 \(g(x)\),质因数乘积为 \(v\) 的集合的点数为 \(c(v)\)

因此按照质因数乘积从小到大考虑每个集合,将当前集合的点互相连成一个连通块,代价为 \(f(x)(c(g(x))-1)\)

然后还需要对这个集合向外连边。若当前集合已经被之前的集合扩展得到,那么这个集合就不需要额外连接,代价增加 \(f(x)\) 即可。

否则,当前集合的一个点需要对区间内的质数连边,代价增加 \(f(x)+1\)。最后尝试从当前集合扩展得到其超集。

最后要减去质数多算的答案为 \(2\),若 \(l=1\) 则只需要减去 \(1\)

QOJ7746 冲啊,兔兔伯爵! / gym104813A Go go Baron Bunny!

Ad-hoc。

还没补。

Day3

AT_abc182_e Akari

按行列把格子依照障碍物切成若干段,依次标记即可,\(H\times W\) 是不大的。

随便怎么做都可以。

QOJ7937 快速异或 (Fast XORting) / gym105465F Fast XORting

气死了,把数组大小从 \(262144\) 改成 \(262145\) 就能过了。

注意到全局异或至多进行一次,考虑先通过交换操作变换成一次异或操作能得到的形式。

不难发现异或操作是一个分组后邻项交换的形式,然后又发现左右两边是子问题,所以分别记录每一层换还是不换即可。

诶等会我这个是不是单 $\log $ 的。

QOJ7618 模式搜索

好诡异的式子啊。

考虑 \(t\) 的周期,设完整周期有 \(k\) 个,字符 \(i\) 在一个完整周期中出现 \(p_i\) 次,字符 \(i\) 在剩下的不完整周期中出现 \(q_i\) 次。

则有 \(bt_i=kp_i+q_i\)\(p_i\ge q_i\)\(p_i\)\(q_i\) 是可以 \(O(1)\) 算的。

枚举 \(k\),答案为 \(\max \min\limits_{i\in\Sigma} \left( \left\lfloor\dfrac{bs_i-bt_i}{p_i}\right\rfloor +1 \right)\)

P13954 [ICPC 2023 Nanjing R] 红黑树 / QOJ7736 红黑树 / gym104821D Red Black Tree

slope trick。

一会补。