getchar_unlock() —— GZOI 2026 爆零寄

· · 生活·游记

::::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。** ## 下午 讲评。感觉今天讲得比昨天好。而且也没有那么快结束。 服用下发的肉松三明治。只有肉松的香味但是吃不到看不到,但是里面沙拉酱还是良好的。 出分。**为什么我爆零了!** **严肃申诉。** ## 晚上 严肃练习贝斯。贴个图。 ![](https://cdn.luogu.com.cn/upload/image_hosting/m350saoi.png) 洗澡的时候回过味来了。原来是快读的问题。捧腹大笑。 **正确写法:** ```cpp #define getchar getchar_unlocked #define putchar putchar_unlocked ``` 希望他们检查的时候疏忽一点,或者告诉 ykm 的时候模糊一点,或者 ykm 见不到我。 完全后悔申诉了。 # Day 3 & 后记 早上起来,到学校已经早读了。迟到的要上讲台带读。严肃逃跑到机房。 为什么 gy 也这么早来。被训一半,严肃逃跑到楼下。然后就乱逛。 其实这个奖真的没有 P 用吧。除了瘤肿公众号需要之外零人在意。你们怎么办,关我 P 事。 “我之懷矣,自詒伊慼。”又作“自詒伊阻”,本质是一样的。我想这件事大概不值得我挂怀,挂怀了就会带来灾厄。“内省不疚,夫何憂何懼?” 为什么我经常把 ykm 打成 ykn。好强的压。