NOIP 2024 游记
坐标 GD DG DH
Day -inf
在 CSP 中取得了 300 pts 的成绩,这确实是令人振奋的。在校内的高一年级中可以排到 rk 1 ,全校 rk 3。遗憾是因为精力问题连 T4 的题面都没有看下去。
考完 CSP 之后,颓废了一段时间,后来重新规划了一下要做什么,决定刷刷 CF。花了一些时间研究了一下从洛谷上爬带翻译的 CF 题面,并打印出来文化课上摸鱼看。
然后就是真题训练,开头的 NOIP 2020 给我的打击不小,T1 原以为是模拟水题,结果因为数据类型的原因给我卡到 60pts,T2 不会做,只会
NOIP 2021 由于花的时间太少了,只做了 T1。
NOIP 2022 。T1 一道 DP 水题,半个小时切了。由于我预先知道喵了个喵的恶名,我直接跳了 T2 去想 T3。T3 的样例过于离谱,第一和第二样例经过缩点之后只剩下两个点,屁用没有,最终不停地猜测转移式,终究是场切了。赛后一看竟然是紫题,使我振奋了不少,然而 T1 因为忘记换行,然而样例都是单测,挂到 1 分。二等并非不可能发生的事情。
NOIP 2023 。T1 签到题,T2 并查集毒瘤,写了近一个半小时才过大样例。T3 骗分骗到 70 pts。
Day -week
与同学开黑打了一场 CF,想着借此上 1600,切了 A,B,C1,C2。我原本预计我只能切到 C2,所以做题的时候就有很明显的心理暗示——做完这题就下班。然而 AC C2之后见讨论 D 更简单,然而大脑已经罢工不干了,最终直接贺了同学的思路。
1581 差一点上 1600,算是一个遗憾吧。不过有点令人疑惑的是,我同学赛前 rating 比我低,赛时分比我高,然而加分比我少。
周二教练组织了模拟赛,个人评估 1 绿 + 3 蓝,直接狂砍 384 pts ,给我自信了。在同一天,经过不懈努力,本人终于学会了三阶魔方的全流程,这时魔方界的一小步,却是 Dangerise 的一大步 !
不过我感觉我的状态越来越差,做题的思考不再集中,反而开始更加依赖注意力。
周四的一整个晚上尝试自己做一道紫题,虽然有思路,但是调不出来,我的实力大抵是止步于此了。
Day -1
机房摸鱼,开始写这篇游记。
准考证发下来了,第一考场的第一座位,算是一个吉利。
和机房的同学对了一下准考证,结果都在同一个考场!!!有一位同学直接在第三座位。
比赛日
由于学校是某 新一线城市 ,所有我们必须极早地出发。本来闹钟定的 5:30,但大抵是心理暗示的作用,醒来的时候只有 5:10 。
5:50 离开宿舍,前往学校大门集合,准备乘车出发。
5:55 在车上,领队提醒检查一下证件,我自己检查了一下,并没有发现身份证,于是急忙告知一位老师,他带着我骑小电驴回教室找。回教室疯找一通,没有找到,但是突然回忆起自己有将身份证和准考证放在一起的动作,于是打电话回车上,发现身份证确实被准考证和另一张资料夹在一起。
6:10 天边方显现出一丝光亮,我们循着曙光出发。学校将早餐送到了车上,我喝了豆奶,感觉味道不错,但是我的肠胃并不这么觉得,开始翻江倒海地抗议,本打算在车上休息,然而因为肚子,休息不了一点。
7:20 我们抵达了考场,于是不得不感慨 新一线城市 和真正的一线城市的区别。我们是最早一批到达考场的,门口的似是老师的人很惊讶,问是哪来的,答:“DGDH”。然后我们谈到了今年学校在 CSP 中的获奖,DH 竟然是全市获奖人数最多的,有五十多位三等奖,属实蚌埠住了。还有横幅上为什么是 GDCA 而不是 CCF,我还要 **** 它呢。
7:35 进入报告厅。我与另外两位同学一同去厕所窜,进到厕所就不得不再一次地感慨,这就是倾一座一线城市全市之力打造的学校吗 ! 厕所恰好有三个蹲位,直接开始三排。在厕所里规划了一下开题,前两题硬干,以我的实力应该能稳稳拿下,后两题先打暴力。
7:50 原本以为报告厅要讲些什么,原不过只是集合,到点之后直接将选手带到机房。到考场一看,有些惊人,考场一半是我校的,另一半是同市的另一个学校,错位相坐。主办方是会排座位的。
8:10 进考场,考场准备了农夫山泉的绿瓶纯净水。其中一位监考老师看起来还挺年轻的,还穿着 ICPC 的衣服。
开考 !
8:27 开考 不过写让我码一会头文件 完全版
8:33 PDF 的密码输了三次都没有输对,有点红温,不过先来看题。第一题的题面看起来像是一个很简单的贪心,有思路了先写。
8:40 输出是 0 但是为什么呢?我靠原来
8:45 完了有点不会啊,小 D 啊小 D 你可以要拿 NOIP 一等的人啊,你总不能 T1 就废了啊!你不是觉得你赛时可以稳切蓝吗 !
8:47 冷静下来,就当 CF 在打。
8:50 我好像会了 !!!开写
8:55 WA on example 1
9:00 重新检查了一下思路,我觉得非常对。
9:05 我超!我都写的啥。改了
WA on example 2
9:10 我懂了,并查集救我 !
9:20 WA on example 2
继续回顾思路,还是感觉对得不能再对,发现代码又是写得依托,改改改。
9:30 examples passed
复刻的赛时代码如下
struct S {
int fa[N];
void init(int x) {
L(i, 1, x) { fa[i] = i; }
}
int find(int x) {
if (fa[x] == x) {
return x;
} else {
return fa[x] = find(fa[x]);
}
}
void join(int x, int y) {
int fx = find(x), fy = find(y);
if (fx != fy) {
fa[fx] = fy;
}
}
};
S as, bs;
int n;
char a[N], b[N], ta[N], tb[N];
int ac[N][2], bc[N][2];
signed main() {
int T = qread();
while (T--) {
n = qread();
as.init(n), bs.init(n);
me(ac, 0);
me(bc, 0);
scanf("%s%s%s%s", a + 1, b + 1, ta + 1, tb + 1);
L(i, 1, n - 1) {
if (ta[i] == ta[i + 1] && ta[i] == '1') {
as.join(i, i + 1);
}
if (tb[i] == tb[i + 1] && tb[i] == '1') {
bs.join(i, i + 1);
}
}
L(i, 1, n) {
ac[as.find(i)][a[i] - '0']++;
bc[bs.find(i)][b[i] - '0']++;
}
int ans = 0;
L(i, 1, n) {
int af = as.find(i), bf = bs.find(i);
L(v, 0, 1) {
if (ac[af][v] > 0 && bc[bf][v] > 0) {
ac[af][v]--;
bc[bf][v]--;
ans++;
}
}
}
printf("%lld\n", ans);
}
return 0;
}
完了,我怎么 T1 就花了那么久。
9:32 开 T2
9:35 有点震撼,没什么思路。
9:40 开始使用注意力
9:45 样例很良心地涉及了每一个特殊性质,太好了。注意到,当
9:50 然而为什么呢?好怪好怪
10:00 我超,看错题了。我看成了 当
10:20 然而这个性质是是怎么来的呢?
10:30 我超!又看错了题了,原来二元限制只有
10:40 思考相邻两个单元约束直接的关系
10:50 我感觉会了,开写 !
11:15 WA on example 2
11:30 漫无目的地调试
11:35 注意到错误的数据,应该是不相邻的单元约束的式子写错了,重新推式子。
11:50 passed examples
复刻代码
constexpr int N = 114514;
struct R {
int c, d;
};
R r[N], inp[N];
int rc[N], rcn;
int n, m, v;
signed main() {
int T = qread();
while (T--) {
n = qread(), m = qread(), v = qread();
me(r, 0);
rcn = 0;
L(i, 1, m) {
inp[i].c = qread(), inp[i].d = qread();
rc[++rcn] = inp[i].c;
}
sort(rc + 1, rc + 1 + rcn);
rcn = unique(rc + 1, rc + 1 + rcn) - (rc + 1);
bool fail = 0;
L(i, 1, m) {
int p = lower_bound(rc + 1, rc + 1 + rcn, inp[i].c) - rc;
if (r[p].d && r[p].d != inp[i].d) {
fail = 1;
break;
}
r[p] = inp[i];
}
if (fail) {
puts("0");
continue;
}
int ans = qpow(v, 2 * (r[1].c - 1));
L(i, 1, rcn - 1) {
int nw;
if (r[i].c == r[i + 1].c - 1) {
nw = (v * (v - 1) % mod + 1) % mod;
} else {
nw = (qpow(v, 2 * (r[i + 1].c - r[i].c)) -
qpow(v, r[i + 1].c - r[i].c ) +
qpow(v, r[i + 1].c - r[i].c - 1) + mod) %
mod;
}
ans = ans * nw % mod;
}
ans = ans * qpow(v, 2 * (n - r[rcn].c)) % mod;
printf("%lld\n", ans);
}
return 0;
}
11:52 看 T3
11:55 不看了,看 T4
12:00 感觉 T4 的暴力比 T3 好写很多,用 ST 表可以轻松拿下
12:30 写了特殊性质 A 和 B,准备看回去做 T3
12:40 头好痛,看不下去,并且突然意识到自己 T4 的特殊性质 A 的复杂度是错的,明明样例跑得还挺快的。
12:50 不会改
1:00 Bye Bye
期望分数 100+100+0+40=240
T2 感觉很多人都会做,240 应该是一个非常大众的分数了。
车上和同学讨论了一下,感觉 T2 确实很多人都会做,去年 GD 的分数线来到了 199 pts,虽然是因为去年有签到题,但是我感觉今年的 T1 也挺签到的,只是我太菜了写太久罢了,没想到上洛谷看到难到了不少人。
CCF 似乎要砍一等的名额,总不能上 200pts 吧。
周一周二中段考,滚回去复习了。