getchar_unlock() —— GZOI 2026 爆零寄
MCxiaokang
·
·
生活·游记
::::error[进士后人!!!!!]{open}
根本就不存在 getchar_unlock() 这个函数!!!!!
你说的对,但是 GZOI 全称广州市中学生数学与科学联赛(信息学)是一款由广州市教育局自主研发的开放世界冒险比赛。后面忘了。
为什么括号里不是化学。
Day -16
本来是我的生日。但是零人在意。
下午 gy 找我们填个人信息报名 GZOI。严禁高三和初中参加。结果第一个祝我生日快乐的是看到我身份证的 gy。
Day -10 ~ 0
我怎么上的高中啊。
我为什么要上高中啊。
下午停课了,晚修还得回去上。不想写作业啊。
报了图书馆管理员的选拔。
Day -4
翘了晚修,在机房尝试捏造一篇词。
多麗·復過明池試作
暑皆消,望雲白晝遲遲。
恐凌寒、長程願速,道歧忽見明池。
竹篁碧、泓澂如洗,數往昔、幾度徘徊?
野徑無人,苔痕半溼,登臨緣側亦堪危。
雨濛濛、餘香過指,星蕊散旁枝。
春去矣,感傷拾起,心底陳思。
掠秋風、叠波殘月,曳動晶瑩鱗衣。
葉偷生、尚圓此季,也應悲、玉瘞花衰。
高鵲啼空,沈魚出水,四絃牽夢到佳期。
凴闌記、曾留舊意,復試譜新詞。
憂難語,諸君或許,笑我多痴?
发给网友被夸赞“终于会说人话”了。
Day 1
上午
8:00 进场了。
::::info[Day 1 T1]{open}
定义长度为 n 的序列 a_i 的总权值为:
\sum_{i=1}^{n-1} \max(a_{i}-a_{i+1},0)
::::
::::success[Day 1 T1]{open}
一开始看错题了,以为是后减前。快推完了才发现,但是本质区别不大。
预处理出前减后、后减前的贡献,做一个前缀和。然后分开得到中间和没翻转两端的贡献,再加上交界处。
**需要快读。**
::::
所以我就写了快读。有了快读还是不够快,严肃解锁:
```cpp
#ifdef __unix
#define getchar getchar_unlock //何意味?
#define putchar putchar_unlock //何意味?
#else
#define getchar _getchar_nolock
#define putchar _putchar_nolock
#endif
```
大概 9:30 **在 Windows 上**跑过去了。
::::info[Day 1 T2]{open}
给定一棵 $n$ 个节点的树,边有开启和关闭两种状态,分别对应两种边权 $(a_i,b_i)$。
对于每种可能出现的总状态,在开启边的导出子图(?是这么描述吗)上,对相邻节点进行配对,一个节点只能和一个其它节点配对或者不配对。配成的点对数量具有最大值。定义该总状态的总权值为:
$$ 点对数量最大值 \times 与开关状态对应的边权之积 $$
求所有状态的总权值之和。
::::
::::warning[Day 1 T2 非正解]{open}
观察出来点对数量应该用树形 DP 做。定义 $dp_{x,0/1/2}$ 表示节点 $x$ 不配对、与父亲配对、与某个儿子配对时,在子树内的最大值。
但是边权不知道有什么处理方法。暴力跑路。
什么叫 $100$ 个测试点每个点 $1$ 分?
::::
::::info[Day 1 T3]{open}
某场比赛有 $N$ 道题、$M$ 名选手,每题满分均为 $K=1$ 或 $K=2$。主办方已经知道所有选手在所有题目上的分数,但还没有向外公布。主办方希望公开某些选手在某些题目上的分数,使得可能的候选冠军(如果有同分,编号小的在前)恰好有 $R$ 名。求最少公开的数量。
::::
::::warning[Day 1 T3 非正解]{open}
看不懂啊。暴力。
::::
::::info[Day 1 T4]{open}
给定长度为 $n$ 的序列 $a_i$。有 $Q$ 组询问,求从 $r$ 处不断向左跳转直到到达 $l$ 的次数。
一次跳转的定义是:选择 $m \in [l,r)$,使得 $|a_r-a_m|$ 最大且 $m$ 最大。随后 $r \gets m$。
::::
::::warning[Day 1 T4 非正解]{open}
写了个线段树维护区间最值。我不是 ST 表大肘子吗。
::::
居然有点心发。
**注意到目前为止我都没有打开过 NOI Linux。**
12:30 去吃饭。明明都有外校的了,怎么饭堂还和平时一样难吃。幸亏饭票是发的而不是卖的啊。
## 下午
听讲评。为什么是 AI 写的。
录讲解时 ykm 从楼下拍我们。紧急卧倒把膝盖滑破了。而且恰好位于去年和一星期前的两处旧伤。严肃前往医务室。
怎么我回来的时候已经讲完了。才 20 min。
本来学长说要出勤的,想尝试学习乌蒙,结果他们直接回家了。我也只能跑路了。
# Day 2
## 上午
进厂。
::::info[Day 2 T1]{open}
在 $n \times m$ 的网格上存在权值 $a_{i,j}$。移动后,身上的权值从 $b$ 变为 $(b+a_{i,j})^2$。给定起终点和起终权值要求,询问是否存在长度 $\le 16$ 的最短路。
::::
::::warning[Day 2 T1 非正解]{open}
只能写 BFS。
好像如果在某两格上一直往返会出现周期性?对正解来说挺重要的。
::::
::::info[Day 2 T2]{open}
给定严格单调递增序列 $a_i$,要求划分成若干个子序列,使它们都是长度 $\ge 2$ 的等差序列,最小化这些等差序列公差的最大值。
::::
::::warning[Day 2 T2 非正解]{open}
可能二分?但是写不出 `check()`。
暴力吧。
::::
::::info[Day 2 T3]{open}
给定序列 $a_i$,$Q$ 次对某个子区间进行博弈。先后手每次选择一项执行:
1. 删除其中一个数。
2. 将该子区间重排为未出现过的顺序。
不能操作则输,求胜者。
::::
::::warning[Day 2 T3 非正解]{open}
为什么没有样例解释?原题意很含糊。
好像和区间长度以及每种数字的出现次数有关。
大样例全是先手胜是何意味?
博弈论什么的到底哪里有暴力可写啊。随便猜了个可能的结论。
::::
::::info[Day 2 T4]{open}
所有非空前缀形成去重集合,每个前缀 $v$ 有绝对价值 $F_v$,沿延长方向不增。
$H_v$ 表示以 $v$ 为前缀的最长输入串的完整长度。
前缀 $u$ 对 $v$ 造成贡献当且仅当
$$|u|+|v|-2|\operatorname{lcp}(u,v)|>H_v,F_u \ge F_v$$
$\operatorname{lcp}$ 指最长公共前缀。
对每个 $u$ 求最少用多少前缀,恰好覆盖 $u$ 能贡献的所有前缀。
::::
::::warning[Day 2 T4 非正解]{open}
输出样例。
::::
居然还有点心发。
**注意到目前为止我都还没有打开过 NOI Linux。**
## 下午
讲评。感觉今天讲得比昨天好。而且也没有那么快结束。
服用下发的肉松三明治。只有肉松的香味但是吃不到看不到,但是里面沙拉酱还是良好的。
出分。**为什么我爆零了!**
**严肃申诉。**
## 晚上
严肃练习贝斯。贴个图。

洗澡的时候回过味来了。原来是快读的问题。捧腹大笑。
**正确写法:**
```cpp
#define getchar getchar_unlocked
#define putchar putchar_unlocked
```
希望他们检查的时候疏忽一点,或者告诉 ykm 的时候模糊一点,或者 ykm 见不到我。
完全后悔申诉了。
# Day 3 & 后记
早上起来,到学校已经早读了。迟到的要上讲台带读。严肃逃跑到机房。
为什么 gy 也这么早来。被训一半,严肃逃跑到楼下。然后就乱逛。
其实这个奖真的没有 P 用吧。除了瘤肿公众号需要之外零人在意。你们怎么办,关我 P 事。
“我之懷矣,自詒伊慼。”又作“自詒伊阻”,本质是一样的。我想这件事大概不值得我挂怀,挂怀了就会带来灾厄。“内省不疚,夫何憂何懼?”
为什么我经常把 ykm 打成 ykn。好强的压。