2025-11-18 NOIP模拟赛总结
liuyi0905
·
·
生活·游记
【MX-S10】梦熊 NOIP 2025 模拟赛 2 & FeOI Round 4(同步赛)
总算发挥好一次了……
---
最开始还是看 T1,感觉一点也不好做。看到要对每个点求最小时间,感觉还是跑最短路什么的,不过没想到怎么跑。硬是看了半个小时,毫无头绪,只好看 T2。
?T2 是什么鬼题目,神秘多项式求导递推求系数,一看就很复杂。刚看完题,有感觉没那么难。手搓完样例才发现错了,本来以为 $F'(x)$ 就是题目中定义的一个固定多项式。有感觉 $F'(x)$ 是像 $F(x)$ 、$G(x)$ 一样的递推式,然后发现又错了。好一会才知道 $F'(x)$ 就是求导😰
于是就比较好做了,直接开始推式子。
$$F_i(x) = G_{i - 1}(x) + G'_{i - 1}(x)$$
$$G_i(x) = F_{i - 1}(x) - F'_{i - 1}(x)$$
把他展开后一个一个算,越算到后面发现越不对劲,还以为有什么长度为 $km$ 的循环节,毕竟 $m \le 5 \times 10^3$。不过显然是什么都没有发现,而且到后面越来越麻烦,只好试着写了一个代码帮我算,不知道有没有什么神秘规律。
::::success[递推代码]
```cpp
#include <bits/stdc++.h>
using namespace std;
using LL = long long;
const int N = 305, M = 1e9 + 7;
LL n, m, f[N][N][N], g[N][N][N];
int main() {
freopen("x.out", "w", stdout);
cin.tie(0)->sync_with_stdio(0);
cin >> n >> m;
for (int i = 0; i <= m; i++)
f[0][i][i] = g[0][i][i] = 1;
for (int t = 1; t <= n; t++) {
cout << t << "\n";
for (int i = 0; i <= m; i++)
for (int j = 0; j <= m; j++) {
f[t][i][j] = g[t - 1][i][j] + (i + 1) * g[t - 1][i + 1][j];
g[t][i][j] = f[t - 1][i][j] - (i + 1) * f[t - 1][i + 1][j];
}
for (int i = 0; i <= m; i++) {
cout << "(";
for (int j = 0; j <= m; j++)
cout << f[t][i][j] << (j < m ? ", " : ") ");
}
cout << "\n";
for (int i = 0; i <= m; i++) {
cout << "(";
for (int j = 0; j <= m; j++)
cout << g[t][i][j] << (j < m ? ", " : ") ");
}
cout << "\n";
}
return 0;
}
```
::::
就输了个 `20 7`,输出来一大堆东西,看着我都头疼,不过貌似真的有这么多东西……就是用 $f_i$ 和 $g_i$ 将 $F_n(x)$ 和 $G_n(x)$ 的系数表示出来,感觉会有什么规律的。
::::info[$F_n(x), G_n(x)$ 系数表]
```
1
(1, 1, 0, 0, 0, 0, 0) (0, 1, 2, 0, 0, 0, 0) (0, 0, 1, 3, 0, 0, 0) (0, 0, 0, 1, 4, 0, 0) (0, 0, 0, 0, 1, 5, 0) (0, 0, 0, 0, 0, 1, 6) (0, 0, 0, 0, 0, 0, 1)
(1, -1, 0, 0, 0, 0, 0) (0, 1, -2, 0, 0, 0, 0) (0, 0, 1, -3, 0, 0, 0) (0, 0, 0, 1, -4, 0, 0) (0, 0, 0, 0, 1, -5, 0) (0, 0, 0, 0, 0, 1, -6) (0, 0, 0, 0, 0, 0, 1)
2
(1, 0, -2, 0, 0, 0, 0) (0, 1, 0, -6, 0, 0, 0) (0, 0, 1, 0, -12, 0, 0) (0, 0, 0, 1, 0, -20, 0) (0, 0, 0, 0, 1, 0, -30) (0, 0, 0, 0, 0, 1, 0) (0, 0, 0, 0, 0, 0, 1)
(1, 0, -2, 0, 0, 0, 0) (0, 1, 0, -6, 0, 0, 0) (0, 0, 1, 0, -12, 0, 0) (0, 0, 0, 1, 0, -20, 0) (0, 0, 0, 0, 1, 0, -30) (0, 0, 0, 0, 0, 1, 0) (0, 0, 0, 0, 0, 0, 1)
3
(1, 1, -2, -6, 0, 0, 0) (0, 1, 2, -6, -24, 0, 0) (0, 0, 1, 3, -12, -60, 0) (0, 0, 0, 1, 4, -20, -120) (0, 0, 0, 0, 1, 5, -30) (0, 0, 0, 0, 0, 1, 6) (0, 0, 0, 0, 0, 0, 1)
(1, -1, -2, 6, 0, 0, 0) (0, 1, -2, -6, 24, 0, 0) (0, 0, 1, -3, -12, 60, 0) (0, 0, 0, 1, -4, -20, 120) (0, 0, 0, 0, 1, -5, -30) (0, 0, 0, 0, 0, 1, -6) (0, 0, 0, 0, 0, 0, 1)
4
(1, 0, -4, 0, 24, 0, 0) (0, 1, 0, -12, 0, 120, 0) (0, 0, 1, 0, -24, 0, 360) (0, 0, 0, 1, 0, -40, 0) (0, 0, 0, 0, 1, 0, -60) (0, 0, 0, 0, 0, 1, 0) (0, 0, 0, 0, 0, 0, 1)
(1, 0, -4, 0, 24, 0, 0) (0, 1, 0, -12, 0, 120, 0) (0, 0, 1, 0, -24, 0, 360) (0, 0, 0, 1, 0, -40, 0) (0, 0, 0, 0, 1, 0, -60) (0, 0, 0, 0, 0, 1, 0) (0, 0, 0, 0, 0, 0, 1)
5
(1, 1, -4, -12, 24, 120, 0) (0, 1, 2, -12, -48, 120, 720) (0, 0, 1, 3, -24, -120, 360) (0, 0, 0, 1, 4, -40, -240) (0, 0, 0, 0, 1, 5, -60) (0, 0, 0, 0, 0, 1, 6) (0, 0, 0, 0, 0, 0, 1)
(1, -1, -4, 12, 24, -120, 0) (0, 1, -2, -12, 48, 120, -720) (0, 0, 1, -3, -24, 120, 360) (0, 0, 0, 1, -4, -40, 240) (0, 0, 0, 0, 1, -5, -60) (0, 0, 0, 0, 0, 1, -6) (0, 0, 0, 0, 0, 0, 1)
6
(1, 0, -6, 0, 72, 0, -720) (0, 1, 0, -18, 0, 360, 0) (0, 0, 1, 0, -36, 0, 1080) (0, 0, 0, 1, 0, -60, 0) (0, 0, 0, 0, 1, 0, -90) (0, 0, 0, 0, 0, 1, 0) (0, 0, 0, 0, 0, 0, 1)
(1, 0, -6, 0, 72, 0, -720) (0, 1, 0, -18, 0, 360, 0) (0, 0, 1, 0, -36, 0, 1080) (0, 0, 0, 1, 0, -60, 0) (0, 0, 0, 0, 1, 0, -90) (0, 0, 0, 0, 0, 1, 0) (0, 0, 0, 0, 0, 0, 1)
7
(1, 1, -6, -18, 72, 360, -720) (0, 1, 2, -18, -72, 360, 2160) (0, 0, 1, 3, -36, -180, 1080) (0, 0, 0, 1, 4, -60, -360) (0, 0, 0, 0, 1, 5, -90) (0, 0, 0, 0, 0, 1, 6) (0, 0, 0, 0, 0, 0, 1)
(1, -1, -6, 18, 72, -360, -720) (0, 1, -2, -18, 72, 360, -2160) (0, 0, 1, -3, -36, 180, 1080) (0, 0, 0, 1, -4, -60, 360) (0, 0, 0, 0, 1, -5, -90) (0, 0, 0, 0, 0, 1, -6) (0, 0, 0, 0, 0, 0, 1)
8
(1, 0, -8, 0, 144, 0, -2880) (0, 1, 0, -24, 0, 720, 0) (0, 0, 1, 0, -48, 0, 2160) (0, 0, 0, 1, 0, -80, 0) (0, 0, 0, 0, 1, 0, -120) (0, 0, 0, 0, 0, 1, 0) (0, 0, 0, 0, 0, 0, 1)
(1, 0, -8, 0, 144, 0, -2880) (0, 1, 0, -24, 0, 720, 0) (0, 0, 1, 0, -48, 0, 2160) (0, 0, 0, 1, 0, -80, 0) (0, 0, 0, 0, 1, 0, -120) (0, 0, 0, 0, 0, 1, 0) (0, 0, 0, 0, 0, 0, 1)
9
(1, 1, -8, -24, 144, 720, -2880) (0, 1, 2, -24, -96, 720, 4320) (0, 0, 1, 3, -48, -240, 2160) (0, 0, 0, 1, 4, -80, -480) (0, 0, 0, 0, 1, 5, -120) (0, 0, 0, 0, 0, 1, 6) (0, 0, 0, 0, 0, 0, 1)
(1, -1, -8, 24, 144, -720, -2880) (0, 1, -2, -24, 96, 720, -4320) (0, 0, 1, -3, -48, 240, 2160) (0, 0, 0, 1, -4, -80, 480) (0, 0, 0, 0, 1, -5, -120) (0, 0, 0, 0, 0, 1, -6) (0, 0, 0, 0, 0, 0, 1)
10
(1, 0, -10, 0, 240, 0, -7200) (0, 1, 0, -30, 0, 1200, 0) (0, 0, 1, 0, -60, 0, 3600) (0, 0, 0, 1, 0, -100, 0) (0, 0, 0, 0, 1, 0, -150) (0, 0, 0, 0, 0, 1, 0) (0, 0, 0, 0, 0, 0, 1)
(1, 0, -10, 0, 240, 0, -7200) (0, 1, 0, -30, 0, 1200, 0) (0, 0, 1, 0, -60, 0, 3600) (0, 0, 0, 1, 0, -100, 0) (0, 0, 0, 0, 1, 0, -150) (0, 0, 0, 0, 0, 1, 0) (0, 0, 0, 0, 0, 0, 1)
11
(1, 1, -10, -30, 240, 1200, -7200) (0, 1, 2, -30, -120, 1200, 7200) (0, 0, 1, 3, -60, -300, 3600) (0, 0, 0, 1, 4, -100, -600) (0, 0, 0, 0, 1, 5, -150) (0, 0, 0, 0, 0, 1, 6) (0, 0, 0, 0, 0, 0, 1)
(1, -1, -10, 30, 240, -1200, -7200) (0, 1, -2, -30, 120, 1200, -7200) (0, 0, 1, -3, -60, 300, 3600) (0, 0, 0, 1, -4, -100, 600) (0, 0, 0, 0, 1, -5, -150) (0, 0, 0, 0, 0, 1, -6) (0, 0, 0, 0, 0, 0, 1)
12
(1, 0, -12, 0, 360, 0, -14400) (0, 1, 0, -36, 0, 1800, 0) (0, 0, 1, 0, -72, 0, 5400) (0, 0, 0, 1, 0, -120, 0) (0, 0, 0, 0, 1, 0, -180) (0, 0, 0, 0, 0, 1, 0) (0, 0, 0, 0, 0, 0, 1)
(1, 0, -12, 0, 360, 0, -14400) (0, 1, 0, -36, 0, 1800, 0) (0, 0, 1, 0, -72, 0, 5400) (0, 0, 0, 1, 0, -120, 0) (0, 0, 0, 0, 1, 0, -180) (0, 0, 0, 0, 0, 1, 0) (0, 0, 0, 0, 0, 0, 1)
13
(1, 1, -12, -36, 360, 1800, -14400) (0, 1, 2, -36, -144, 1800, 10800) (0, 0, 1, 3, -72, -360, 5400) (0, 0, 0, 1, 4, -120, -720) (0, 0, 0, 0, 1, 5, -180) (0, 0, 0, 0, 0, 1, 6) (0, 0, 0, 0, 0, 0, 1)
(1, -1, -12, 36, 360, -1800, -14400) (0, 1, -2, -36, 144, 1800, -10800) (0, 0, 1, -3, -72, 360, 5400) (0, 0, 0, 1, -4, -120, 720) (0, 0, 0, 0, 1, -5, -180) (0, 0, 0, 0, 0, 1, -6) (0, 0, 0, 0, 0, 0, 1)
14
(1, 0, -14, 0, 504, 0, -25200) (0, 1, 0, -42, 0, 2520, 0) (0, 0, 1, 0, -84, 0, 7560) (0, 0, 0, 1, 0, -140, 0) (0, 0, 0, 0, 1, 0, -210) (0, 0, 0, 0, 0, 1, 0) (0, 0, 0, 0, 0, 0, 1)
(1, 0, -14, 0, 504, 0, -25200) (0, 1, 0, -42, 0, 2520, 0) (0, 0, 1, 0, -84, 0, 7560) (0, 0, 0, 1, 0, -140, 0) (0, 0, 0, 0, 1, 0, -210) (0, 0, 0, 0, 0, 1, 0) (0, 0, 0, 0, 0, 0, 1)
15
(1, 1, -14, -42, 504, 2520, -25200) (0, 1, 2, -42, -168, 2520, 15120) (0, 0, 1, 3, -84, -420, 7560) (0, 0, 0, 1, 4, -140, -840) (0, 0, 0, 0, 1, 5, -210) (0, 0, 0, 0, 0, 1, 6) (0, 0, 0, 0, 0, 0, 1)
(1, -1, -14, 42, 504, -2520, -25200) (0, 1, -2, -42, 168, 2520, -15120) (0, 0, 1, -3, -84, 420, 7560) (0, 0, 0, 1, -4, -140, 840) (0, 0, 0, 0, 1, -5, -210) (0, 0, 0, 0, 0, 1, -6) (0, 0, 0, 0, 0, 0, 1)
16
(1, 0, -16, 0, 672, 0, -40320) (0, 1, 0, -48, 0, 3360, 0) (0, 0, 1, 0, -96, 0, 10080) (0, 0, 0, 1, 0, -160, 0) (0, 0, 0, 0, 1, 0, -240) (0, 0, 0, 0, 0, 1, 0) (0, 0, 0, 0, 0, 0, 1)
(1, 0, -16, 0, 672, 0, -40320) (0, 1, 0, -48, 0, 3360, 0) (0, 0, 1, 0, -96, 0, 10080) (0, 0, 0, 1, 0, -160, 0) (0, 0, 0, 0, 1, 0, -240) (0, 0, 0, 0, 0, 1, 0) (0, 0, 0, 0, 0, 0, 1)
17
(1, 1, -16, -48, 672, 3360, -40320) (0, 1, 2, -48, -192, 3360, 20160) (0, 0, 1, 3, -96, -480, 10080) (0, 0, 0, 1, 4, -160, -960) (0, 0, 0, 0, 1, 5, -240) (0, 0, 0, 0, 0, 1, 6) (0, 0, 0, 0, 0, 0, 1)
(1, -1, -16, 48, 672, -3360, -40320) (0, 1, -2, -48, 192, 3360, -20160) (0, 0, 1, -3, -96, 480, 10080) (0, 0, 0, 1, -4, -160, 960) (0, 0, 0, 0, 1, -5, -240) (0, 0, 0, 0, 0, 1, -6) (0, 0, 0, 0, 0, 0, 1)
18
(1, 0, -18, 0, 864, 0, -60480) (0, 1, 0, -54, 0, 4320, 0) (0, 0, 1, 0, -108, 0, 12960) (0, 0, 0, 1, 0, -180, 0) (0, 0, 0, 0, 1, 0, -270) (0, 0, 0, 0, 0, 1, 0) (0, 0, 0, 0, 0, 0, 1)
(1, 0, -18, 0, 864, 0, -60480) (0, 1, 0, -54, 0, 4320, 0) (0, 0, 1, 0, -108, 0, 12960) (0, 0, 0, 1, 0, -180, 0) (0, 0, 0, 0, 1, 0, -270) (0, 0, 0, 0, 0, 1, 0) (0, 0, 0, 0, 0, 0, 1)
19
(1, 1, -18, -54, 864, 4320, -60480) (0, 1, 2, -54, -216, 4320, 25920) (0, 0, 1, 3, -108, -540, 12960) (0, 0, 0, 1, 4, -180, -1080) (0, 0, 0, 0, 1, 5, -270) (0, 0, 0, 0, 0, 1, 6) (0, 0, 0, 0, 0, 0, 1)
(1, -1, -18, 54, 864, -4320, -60480) (0, 1, -2, -54, 216, 4320, -25920) (0, 0, 1, -3, -108, 540, 12960) (0, 0, 0, 1, -4, -180, 1080) (0, 0, 0, 0, 1, -5, -270) (0, 0, 0, 0, 0, 1, -6) (0, 0, 0, 0, 0, 0, 1)
20
(1, 0, -20, 0, 1080, 0, -86400) (0, 1, 0, -60, 0, 5400, 0) (0, 0, 1, 0, -120, 0, 16200) (0, 0, 0, 1, 0, -200, 0) (0, 0, 0, 0, 1, 0, -300) (0, 0, 0, 0, 0, 1, 0) (0, 0, 0, 0, 0, 0, 1)
(1, 0, -20, 0, 1080, 0, -86400) (0, 1, 0, -60, 0, 5400, 0) (0, 0, 1, 0, -120, 0, 16200) (0, 0, 0, 1, 0, -200, 0) (0, 0, 0, 0, 1, 0, -300) (0, 0, 0, 0, 0, 1, 0) (0, 0, 0, 0, 0, 0, 1)
```
::::
感觉 $k_{n, i, j}$ 和 $k_{n - 1, i, j}$ 有一定的倍数关系,具体算了一下,发现 $k_{n, i, j}$ 是 $k_{j, i, j}$ 的倍数……吗?弄了一下发现不太对劲,根本没有什么规律可言。再一看比赛时间已经过半了🥱,该放弃吗?不,还是得坚持,就不信今天做不出这道题!不过还是得给其他题留足时间,打算在 $10 : 00$ 前要是还没做出来就放弃。
首先观察了一下 $k_{7, 0}$,不知道这里面的数有没有什么规律。看了看两两之间的比,居然是 $1, -6, 3, -4, 5, -2$ 和 $-1, 6, -3, 4, -5, 2$。算了算其他的数,发现也都有这样的规律!我瞬间来了精神,既然已经可以求出 $k_{n, 0}$,那 $k_n$ 的通项公式也一定不远了😲。
发现 $k_{n, i}$ 前面都有一段 $0$,且个数为 $i$,所以当作 $k_{n, i}$ 从第 $i$ 位开始计算。我感觉还是有一定的比例关系,于是设 $k_{n, i, j} = q_{i, j} k_{n, i - 1, j - i}$,立刻可以算出 $q$,而且非常有规律:
$$q_1 = \{1, 2, 3, 4, 5, 6, 7\}\\$$
$$q_2 = \{1, 3, 6, 10, 15, 21, 28\}$$
$$q_3 = \{1, 4, 10, 20, 35, 54, 82\}$$
$$\vdots$$
不过有规律的也只是 $q_1$ 和 $q_2$,之后的也完全看不出来,突然发现一个很神奇的规律:$q_i$ 不就是 $q_{i - 1}$ 的前缀和数组吗?太好了!现在离 AC 只有一步之遥了——代码。
有了规律,代码就只是看起来比较难,实际上一点也不简单。对于 $n$ 是奇数的时候,还需要交换 $f$ 和 $g$,因为 $F_n(x)$ 和 $G_n(x)$ 是交替递推的。而且 $k_{n, i, j}$ 也并非那么好算,因为中间会出现许多抵消,所以有不少 $k_{n, i, j} = 0$。不过有了之前生成的那张表,一下子就写出来了。
::::success[T2 青年晚报]
```cpp
#include <bits/stdc++.h>
using namespace std;
using LL = long long;
const int N = 5005, M = 1e9 + 7;
LL n, m, a[N], b[N], f[N], g[N], k[N], s[N], x[N], y[N];
int main() {
// freopen("b5.in", "r", stdin);
// freopen("b.out", "w", stdout);
cin.tie(0)->sync_with_stdio(0);
cin >> n >> m;
for (int i = 0; i <= m; i++) cin >> a[i];
for (int i = 0; i <= m; i++)
cin >> b[i], n % 2 && (swap(a[i], b[i]), 1);
for (int i = x[0] = y[0] = 1; i <= m; i++) {
LL k = (i % 2 ? i : n / 2 * 2 + 2 - i);
x[i] = x[i - 1] * ((n % 2 ? (i % 2 ? 1 : -1) : (i % 2 ? -1 : 1)) * k + M) % M;
y[i] = y[i - 1] * ((n % 2 ? (i % 2 ? -1 : 1) : (i % 2 ? 1 : -1)) * k + M) % M;
}
for (int i = 0; i <= m; i++) {
!(n % 2) && i % 2 && (x[i] = y[i] = 0);
f[0] = (f[0] + x[i] * a[i] % M) % M, g[0] = (g[0] + y[i] * b[i] % M) % M;
}
iota(s, s + m + 1, 1);
for (int i = 1; i <= m; i++) {
for (int j = i; j <= m; j++) {
f[i] = (f[i] + x[j - i] * s[j - i] % M * a[j] % M) % M;
g[i] = (g[i] + y[j - i] * s[j - i] % M * b[j] % M) % M;
}
for (int j = 1; j <= m; j++) s[j] = (s[j - 1] + s[j]) % M;
}
for (int i = 0; i <= m; i++) cout << f[i] << " \n"[i == m];
for (int i = 0; i <= m; i++) cout << g[i] << " ";
return 0;
}
```
::::
稍作调试,大样例全过!😀😁😂🤣😃😄😅😆😊 简直不要太高兴,在检查了一会,直接回去看 T1。
啊啊啊啊啊 突然发现已经 $11 : 00$ 了,看样子 T1 是没有时间写了。不过还有整整一个小时,还是得在临死前努把力吧。放弃之前的歪思路,从头开始(其实是已经忘光了,T2 还是太烧脑了)
突然发现一个很重要的结论,要想走到 $d$,至少得等 $kd$ 秒拿完 $d$ 个铁锭。所以此时的最优方案应该是先把 $d - 1$ 步走完,最后跑回 $0$ 拿最后一个铁锭,再跑到 $d - 1$,铺到 $d$。可仔细一想不太对,他不一定要走 $d - 1$,说不定 $d - 2,d - 3,\cdots$ 会更优。
哎呀!我怎么就没想到呢,不就是 dp 嘛。设 $f_i$ 表示走到 $i$ 的最少时间,转移就很简单了
$$f_i = \min_{j = 1}^{i - 1}\{\max(f_j + t_2 j, k i) + t_2 j + t_1 (i - j)\}$$
马上就写了出来,哇!这出题人也太良心了吧,$\mathcal{O}(m^2)$ 有 $90$ 分?!😙 但看着还有时间,打算继续优化,毕竟这个式子看起来一点也不难求。不过当我把线段树、树状数组、算贡献等各种奇葩方法试了一遍,发现并没有那么简单。不过看着眼前这么短的式子,看着这么短的代码,我陷入了沉思🤔。
眼睛还在持续发力,你怎么知道可以用三分呢😜,我赌,我赌它是一个单谷函数,不试一下怎么知道呢。wow,大样例再次奇迹般地过了。怕他不保险,还对拍了好多组数据,毫无漏洞。
::::success[T1 寻雾启示]
```cpp
#include <bits/stdc++.h>
using namespace std;
using LL = long long;
const int N = 1e5 + 5;
LL t, n, k, x, y, f[N];
LL C(LL i, LL j) {
return max(f[j] + j * y, i * k) + j * (y - x) + i * x;
}
int main() {
// freopen("a2.in", "r", stdin);
// freopen("a.out", "w", stdout);
cin.tie(0)->sync_with_stdio(0);
for (cin >> t; t; t--) {
cin >> n >> k >> x >> y;
for (LL i = 1; i <= n; i++) {
f[i] = 1e18;
LL l = -1, r = i;
for (LL o; l + 1 < r;)
o = l + r >> 1, C(i, o) <= C(i, o + 1) ? r = o : l = o;
cout << (f[i] = C(i, r)) << " ";
}
cout << "\n";
}
return 0;
}
```
::::
接下来的时间就该打 T3 T4 的暴力了,你为什么要在只有二十分钟的时候告诉我只有二十分钟了呢(逻辑清晰),看样子是写不出暴力了。听他们说 T3 非常难,暴力都写不出,但我可没那么好骗,才不信他们的鬼话呢🤨 但当我看到 T3 题面的时候就彻底相信了……
T4 暴力貌似并没有那么难,$\mathcal{O}(q n^3 \log n)$ 暴力轻轻松松,但貌似没有这一档分……只好优化成了 $\mathcal{O}(q n^3)$,再一看
> 测试点 $1 \sim 2$,满足 $n, q \le 300$。
你认真的吗,那我还有个鸡毛的分啊。突然发现可以继续优化成 $\mathcal{O}(q n^2 \log n)$,大概是勉强通过了。可写着写着才发现,我会在规定时间内求好区间,可在时限内调出好的好区间又不会了啊……我真是个人物,后来改成了 $\mathcal{O}(q n^3)$ 暴力,不知道有没有分,可居然这个纯暴力都没有调出来,也是生无可恋了。
接下来的时间就是向 zrr 保佑 T1 T2 不挂分了,那样至少还能上 $200$。
---
一分没挂,第一次上 $200$,也算是最好的一次了😀
要没有倔强的探索,死磕的精神,也许也就没有了这次的成绩,三小时的努力终究是没有付之一炬。
> 只有毅力才会使我们成功,而毅力的来源又在于毫不动摇,坚决采取为达到成功所需要的手段。——车尔尼雪夫斯基