2024 暑期模拟赛 #4
怎么又是大模拟 xd
2024暑期CSP-S&NOIP模拟赛第4套
时间:4.5h (2025.10.26 07:30~12:00)
题目数:4
难度:
| A | B | C | D |
|---|---|---|---|
| \(\color{#FFC116} 黄\) | \(\color{#52C41A} 绿\) | \(\color{#52C41A} 绿\) | \(\color{#3498DB} 蓝\) |
| *1400 | *1800 | *1700 | *2400 |
估分:100 + 83 + 100 + 8 = 291
得分:90 + 47 + 100 + 0 = 237
Rank:2/6
场祭
读题。
A 签。
B 怎么是大模拟,推了推发现重点是 \(p \oplus q\) 的奇偶性,但是情况非常多,特判一大坨 /tuu
看了眼 C,直接放线段树板子?
还是先写 B,写写写,怎么过样例了?不是这大样例怎么这么弱?还只给一个?甚至没有任何 max 操作甚至没有无解情况?出题人是认为这是在打 ACM 吗?
不管了,先写 C 去了。
然后开 D,发现不怎么会。
回来查 B,哦轻而易举地 hack 掉了自己,然后写写写调调调发现处理不了把非 \(p_i \ne 1\) 插入到 \(p_j = 1\) 的中间的情况,就是说前面那个情况 \(t_j < t_i\),因为 max 标记是没法删除的。考虑把 \(p_i = 1\) 都放到一块,从前往后存每个 max 标记,但是又发现在 \(p_i = 1\) 中间插入 \(p_i = 1\) 的复杂度还是不对的,于是不管了拍个暴力上去走人了。
……实际上是因为没时间了。
30min 先把 D 特殊性质写掉,然后发现会了 \(O(n^3 \log n)\) 的做法,写写写,没过样例!
补题
B 挂了一坨感觉很正常的。
A 是挂 corner case 了。
补 D,我嘞个顶级 dp 优化(
先是一步容斥,转化为求不包含 \(i\) 的方案数
考虑一个暴力地不能再暴力的 dp,令 \(f_{i,w}\) 为前 \(i\) 个,\(i\) 必选,选择的以 \(i\) 结尾的区间的 gcd 为 \(w\) 的方案数,则枚举这一个选择的区间的开始位置、上一个选择的区间结束位置,有转移:
然后注意到 \(w\) 只有 log 种取值,而 \(\gcd \{ a_j \ldots a_i \} = w\) 中当 \(w\) 固定的时候,\(j\) 的取值范围是容易维护的。
关于 \(j\) 的范围如何维护:考虑如果已经知道了 \(i-1\) 对应的所有区间(用一个四元组表示为 \((l,r,w,i-1)\),含义显然),那么在推到 \(i\) 的时候,先把 \((i,i,a_i,i)\) 加入,然后依次往前判个 gcd 后合并就可以了。
所以 \(j\) 的枚举就可以从 \(O(n)\) 变成 \(O(\log V)\) 的了。
但是 \(k\) 的枚举省不了啊!因为 \(w\) 总共有 \(O(n \log V)\) 种取值,没法直接前缀和。
然后复杂度就卡在了 \(O(n^2 \log V)\) 上了,而且是难优化的。
然后就是想不到的了,考虑直接维护 \(g_{i,w}\) 表示 \(1 \sim i\) 种选若干个 gcd 为 \(w\) 的区间的方案数。然后发现这个东西还是很好转移的:
-
如果不选 \(i\),则 \(g\) 值不会产生任何变化,即:
\[g_{i,w} \gets g_{i-1,w} \] -
如果选,那必须存在一个四元组 \((l,r,w,i)\),则可以选一个区间 \([j,i]\) 转移,有:
\[g_{i,w} \gets g_{i-1,w} + \sum _{j=l} ^r (g_{j-1,w} + 1) \]其中 \(+1\) 是因为可以只选 \([j,i]\) 这一个区间。
然后发现这玩意能上线段树就做完了(
B 做法大体是对的,但是细节太多了,懒得补。祈祷正式赛不会再出大模拟了吧 XD,反正 NOIP 不出就行,CSP-S 倒是无所谓。
天依宝宝可爱!

浙公网安备 33010602011771号