MX 练石 2025 NOIP #1

啥啊。怎么打这么烂……


2025 --【炼石计划 NOIP】-- 第一套

链接:link
题解:link

时间:4.5h (2025.08.29 07:30~12:00)
题目数:4
难度:

A B C D
\(\color{#FFC116} 黄\) \(\color{#52C41A} 绿\) \(\color{#3498DB} 蓝\) \(\color{#9D3DCF} 紫\)
*1300 *1600 *2100 *?

估分:[60,100] + 52 + 20 + 0 = [132,172]
得分:100 + 52 + 20 + 0 = 172
Rank:54/214


场祭

读题。

A 看上去挺简单的,开 A。但是发现直接二分每个数不可以,好像前缀处理也不怎么行。所以想到整体二分,但是这玩意其实以前根本没写过……

所以调了 20120712min,才两只 log 过去。不过两只 log 倒是跑不满,应该能卡过不少。

好像已经 2h40min+ 了,要寄了。

开 B,先把第一小问的 48pts 写了,然后去想正解,但是想不出来。

没时间了,写了 C 的 20pts 性质 A,摆了。


补题

草,A 脑抽了。

注意到有结论:「每次增加必须选择不同的元素」是没用的。因为限制的扩张速度只有 \(1\),所以「本次对 \(a_i\) 增加 \(2\),下次对 \(a_j\) 增加 \(2\)」与「本次对 \(a_i , a_j\) 分别增加 \(1\),下次分别增加 \(1\)」是等价的,晚一点增加不会导致被限制。

所以就只与需要增加的数量和有关了。

注意不能直接全算,因为本来就很大的元素有可能远远大于最终的 \(x\)。但是当 \(k \gets k+1\) 时,用到的元素一定会增加或不变,所以可以双指针维护,这样就只有一只 log 了(二分 \(x\))。

B 怎么也这么简单,考虑性质 C,即第一小问的答案为 \(0\)。显然贪心是成立的,每次跳到能跳到的最右边的 \(1\) 一定最优,这个显然可以倍增解决。

又发现当一段 \(0\) 必须跳的时候,无论起点在哪,经过 \(0\) 的次数都是一样的,所以可以直接把每一段长度为 \(x\)\(0\) 缩成长度为 \(x \bmod k\)\(0\),这样就可以用性质 C 的做法做了。

补 C,怎么也这么简单!显然是 dp,先考虑性质 B 怎么做,令 \(f_{i,j}\) 为第 \(i\) 步,一只手在 \(y_i\),另一只手在位置 \(j\) 的最小代价。可以发现每一步移动两只手一定不是更优的,所以只需要考虑移动哪只手到 \(y_i\) 即可。

  • 移动 \(y_{i-1}\),即 \(y_{i-1} \to y_i , j \to j\)。所以枚举 \(j \in [1,n]\),转移 \(f_{i , j} \xleftarrow{\min} f_{i-1 , j} + d(y_i , y_{i-1})\)
  • 移动另一只手(令为 \(k\)),即 \(k \to y_i , j = y_{i-1}\)。所以枚举 \(k \in [1,n]\),转移 \(f_{i,y_{i-1}} \xleftarrow{\min} f_{i-1,k} + d(k,y_i)\)

推广是容易的,如果出现了两个手都有要求的情况,直接分开,在转移第二只手的时候不允许第一种转移即可。

不过直接转移显然不可以,考虑数据结构优化。

先整理一下,可以得到:

\[\begin{aligned} f_{i,y_{i-1}} & = \min ( \min _{1 \le k \le n} \{ f_{i-1,k} + d(k,y_i) \} , f_{i-1,y_{i-1}} + d(y_i,y_{i-1}) ) \\ f_{i,j} & = f_{i-1,j} + d(y_i , y_{i-1}) \\ f_{y_i} & = \infin \end{aligned} \]

注意到第二种转移就是区间加,线段树可以解决;第一种操作是单点修改,这个是容易的,但是还要求一个区间 min,而且 \(d(k,y_i)\) 不固定。

但是稍微注意一下,就可以发现 \(d(k,y_i)\) 一共只有四种可能,如图,考虑在一个圆上,\(y_i\)\(y_i\) 的对称点 \(y_i + \frac n 2\) 是一对分界点,\(n\) 是一个分界点,再分讨 \(y_i\) 在圆的左半边还是右半边,最后只可能有 \(4\) 种取值,分别是 \(y_i-k , k-y_i , n-k+y_i , n-y_i+k\),所以只需要分别维护 \(f_{i,k} + k\)\(f_{i,k} - k\) 的 min 即可,显然线段树可以解决。

D 是数位 dp,但是看上去好困难好困难。感觉这个是一天也补不出来的。


天依宝宝可爱!

posted @ 2025-08-29 17:53  little__bug  阅读(154)  评论(5)    收藏  举报