GDOI 2026 翻盘记
lichenghan · · 生活·游记
超绝大翻盘。
11.29
NOIP。
遥远的过去,已经记不清了。
大战 sale 3 小时,拼尽全力获得 20 分和三四个假做法。
出考场预估 208,实际得分 217。疑似 T3, T4 暴力各多跑过去一个点。
据说省队线 300 左右。哥们破防了,游记都没写。目前不知道怎么进队。
2.5-2.9 @ 青岛
猜猜为啥是到 2.9 结束
3.6
上午前往中山。车程 1.5h,路上打 Exponential Idle (EI)。
到达南朗希尔顿酒店,距离考场约 8km(考场附近过于荒凉,我还是希望住一个好一点的酒店 w)
准考证 GD-067。得翻 50 个人才能进队啊。
下午是试机。鼠标滚轮出锅,联系志愿者更换了鼠标。机器有 16GB 内存,运行虚拟机没有卡顿,决定明后天在 NOI Linux 中打完全程的比赛。为啥?因为我去年省选 CE 了!
这里向大家种草我的比赛机器配置:把考生目录(形如 D:/GD-xxx/)设置为虚拟机的共享文件夹,这样可以无缝的在虚拟机里写题,比赛结束时无需额外的拷贝操作,也不会因为机器故障导致的虚拟机状态丢失造成代码丢失!(一般考生目录是不重启还原的,如果还原了……RIP。)
::::info[关于 makefile 的内容。写太长了,折叠一下。]
虽然每个人有每个人的习惯,但是我还是想写一下 w
推荐使用 makefile 编译!
比如说,题目的目录是 ~/night,我们写好了 night.cpp。
此时,我们新建一个 makefile 文件,内容写入 all: night。含义为:“所有需要制作的目标有:night”。
接下来,执行 make 指令。make 会搜索到我们的 night.cpp,从而执行 g++ night.cpp -o night。
我习惯做一个 alias m=make,将 m 设为 make 的别名,进一步缩短编译指令。
如果你需要编译多个文件,可以在 all: 后面依次书写需要得到的可执行文件名。
在终端中执行 export CPPFLAGS='-std=c++14' 或类似指令修改编译参数。这行命令的含义为:设定变量 CPPFLAGS 的值为指定的字符串。
你还可以把这行 export 追加到 ~/.bashrc 尾部以在每次打开终端时自动执行。
如果你想要临时修改,也可以在 makefile 内部更改 CPPFLAGS 变量。例如:
CPPFLAGS += -fsanitize=address -g # 添加 sanitizer
CPPFLAGS = -std=c++14 -static -DCIALLO # 等于号也可以用!
这个时候,如果你执行 make,会看到 CPPFLAGS 被加入了编译指令!
你可以直接执行 make night 来临时编译 night.cpp 而无需更改 makefile 文件。
make 只会在可执行文件的修改时间早于源文件时编译,这个是不会检查 CPPFLAGS 或者 makefile 的修改时间的,你可以通过 touch night.cpp 或者 make -B 的方式强制 make 编译。
make 也是可以进行联合编译的。比如,perm 一题,可以这样书写 makefile:
all: perm # 其实这行可以不写。只有多于一个文件需要编译的时候必须写 all。
perm: perm.cpp grader.cpp
其含义为:需要制作 perm,perm 需要由 perm.cpp,gen.cpp 两个文件编译。
如果特殊情况出现,make 无法自动推导编译指令,还有最后的保底:自己指定编译指令!
all: perm
perm: perm.cpp grader.cpp
g++ -o perm perm.cpp grader.cpp -std=c++14 -O2 -Wall # 自定义
::::
试了 20min 就跑了。中山纪中是教练的母校,教练于是成为了导游,带着校队参观校园。可惜许多曾经教练能进去的地方已经进不去了 www。
见到了许久未见的 ymh。交谈甚欢。
晚上压力作祟,我进食了大量零食。尝试在酒店唱歌,发现肚子被填满了音色不好听。乐。
3.7
Day 1。
吸取曾经的教训,我再也不喝咖啡了。
路上继续唱歌以缓解焦虑。
8:27 公布密码。为了避免不必要的问题,我决定在这三分钟完成虚拟机的配置而不是解压缩。
思考 T1。写出立方状态的 DP。意识到状态与节点高度有关,将长剖加入 idea list。写出平方状态,立方转移的 DP。想到回撤背包。分析了一圈回撤的复杂度发现带个长剖就平方了。开写!
一个小时通过 T1。阅读 T2, T3。
读完感觉两个题都不可做。但想了一会 T2 发现会了一个
写完了,果然过不去大样例。预期
感觉此题数据极其难造,应该卡不满,开始疯狂剪枝。最后大样例跑了 1s,认为应该差不多了。预期
此时剩余 2.5h,看看 T3。
手玩了一会,发现应该倒过来考虑。从
出考场,
我、drc、ymh 兴奋地讨论着题目走出了校门,我开始寻找家长准备去吃饭,他们才想起来需要前往饭堂 w。
下午、晚上都窝在床上。今天唱歌好听一些了。
3.8
Day 2。
依旧路上唱歌。
依旧配置虚拟机起手。
开题,发现两个交互。喵?
做 T1,思考了一会发现只许前后缀的 mex,获得
想到了二分
发现
看了眼 T3,感觉这个集合的序比较克苏鲁,决定先做 T2。
推了一会,决定把所有
因为线性基只有那么大,
发现了如何
此时只剩下
构了一个小时。没构出来。放弃了(
写了所有情况的 report 和
剩下一个半小时左右,开始研究 T3。
手玩了一会,发现可以用类似 dijkstra 的方式求出所有集合的序关系。然后拼上菊花拼上
写完了,还剩
发现今天手特别酸。回想了一下,是我 T2 和 T3 一直在拼包,写了巨量的代码导致的(
出考场。期望得分
ymh 好像炸了,抱抱。ou 和 drc 都做出了 T2。
3.12
出分。