2024 暑期模拟赛 #4

怎么又是大模拟 xd


2024暑期CSP-S&NOIP模拟赛第4套

链接:link
题解:link

时间: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\) 的方案数,则枚举这一个选择的区间的开始位置、上一个选择的区间结束位置,有转移:

\[f_{i,w} = \sum _{j=1} ^i [\gcd \{ a_j \ldots a_i \} = w] \sum _{k=0} ^{j-1} f_{k,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 倒是无所谓。


天依宝宝可爱!

posted @ 2025-10-26 14:23  little__bug  阅读(58)  评论(0)    收藏  举报