游记 GDOI2024(联合省选)
游记 GDOI 2024 联合省选
东莞市东莞中学松山湖学校 2024.3.2-2024.3.3
2.17~2.29
某学校集训。
发现有幸可以跟着某学校去松山湖旅游。
话说上次去 GDKOI 忘记旅游了,没测松山湖水深。这次去总该有时间测了吧,。
补充:考场上如果用虚拟机,复制到 windows 下时记得再次编译(防止编码混乱、开错版本,而且不要修改文件)。noi linux 在右上角可以选择语言输入中文。
3.1
如果你发现你的座位左边是刘海峰,右边是欧阳达晟,为了减少压力,你可以选择 sudo rm -rf /*
以将自己的座位切换到 53 号座位。密码是 123456。
虚拟机很卡。
达成成就:11:45 吃中午饭;连续复习至多五个小时的模板。
3.2
感觉砸了,考虑复盘稳定心态。写的会比较多。
8:30
可以看出前一天的睡眠时间有点少,吃早餐的时候很精神,坐车的时候就困,然后到考场上就很困了。
然后惊恐的读了一下题目,感觉 T1 是能做的,T2 等一会去定义它,T3 是有很多性质的题目。
8:45
虚拟机卡顿问题严重!写了 backup.py,然后调了一下也不算浪费很多时间。明天要写快一点。
T1 读懂题了,然后 T2 想象到第一步是二分,然后可能是数位 dp 之类。但是先做 T1。
-
最后一步一定有一个枚举模 \(n\) 的余数。
-
应该将 \(x', y'\) 都尽可能平均分配,不然,可以调整至平均分配且仍符合限制。
-
\[|X-\sum_{i=0}^{m-1}x_{i \bmod n}|+|Y-\sum_{i=0}^{m-1}y_{i \bmod n}|\leq mk \]
-
这是一个暴力。不能判有无解挺草的。
枚举 \(m\bmod n\)。然后做了一个很错误的转化:
一开始还以为两个是等价的。然后兴高采烈地开始解不等式。因为前三个样例 \(n=1\),所以一直混淆了 \(m\) 和 \(\left\lfloor m/n\right\rfloor\) 的区别,还手写了一个分数类用于解一坨不等式,还要找到 \(\geq\) 某个有理数的第一个 \(\bmod n=u\) 的整数。写了好久。
9:30
此时还确信这样玩是对的。在和四个样例做斗争,好多细节,还要开 __int128
。巨长。
10:00
直到调试到第四个样例,都没有发现算法是完全错误的。这个时候其实就有一点崩了,加上虚拟机的感人速度,但是好处是很精神。
然后我决定重新整理一下,并继续做 T1。这个时间点忘记写 T2、T3 大暴力了,是失误。就是急了,心态的问题。
记 \(bx=X-prex_u, c_x=-\sum_{i=0}^{n-1}x_i\)。\(y\) 方向同理。换元,\(m\to \left\lfloor m/n\right\rfloor\)。
拆成四个不等式:
解不等式组。这里,\(m\) 的值域是全体非负整数,即一开始放一个 \(m\geq 0\)。
根据不等号方向,将结果合并为两个边界,然后比较边界,选出最小的解。注意特判系数为正、为负、为零的情况,因为你已经学习过八年级数学,所以这部分是平凡的。
好像是半小时就写完了,大样例调了一会,很快就 gdb 看出来了。
10:30
大屏幕的倒计时有严重的误导性。+02:00:00 是 10:30,-02:00:00 是 11:00,我也记不清写完 T1 以后我看到的是什么。结论是不如看手表。考场时间和平常的时间 +00:00:30,有一个明显的时差在。这一点要注意。下面的部分比较混乱因为实在太紧张了,没有记录时间。
然后是 T2。二分以后,想了很久怎么数位 dp。从高到低和从低到高都试过,然后发现有好多决策。画了一棵线段树,大概理解了为什么数位 dp 不行。
然后就发现了线段树的一个经典技巧。其实就是 0-1 trie 整体异或一个值那个技巧。
因为预计到自己可能要写一会,所以先写一下 T3。这个 T3 好玩。一上来转化成 \(m\) 个排列。然后是什么东西,\(m+k\) 个排列需要两两复合有交换性(记复合为 \(\times\),则要求所有 \(a\times b=b\times a\))???有趣,然后打了一下暴力。然后发现这个交换性有自反律没有传递性???我也没有仔细看,忘记看了,因为有个 T2 能写,去写 T2 去。突然看到 \(m=0, k = 1\) 笑死了多拿 8 分。
然后就写 T2。顺手适配了一下 4-13 这些单点加的部分。后面有一个线段树二分要找最大的 \(x\),所以线段树要打 lazytag,所以要写线段树。然后测大样例。xor2.in
跑了五秒。而且答案是错的。刚开始我是不信的,因为是虚拟机挂了,然后 backup 到 windows 下测大样例,还是五秒。但是 xor3.in
就跑的很快。原来 \(n=2\)。但是 xor4.in
又是五秒。我想了一下这做法是 2log 的(\(O(nk^2)\) 的),可能你的常数有点逆天了。我也没想到怎么卡这玩意常数,先试了一下 fsanitize 发现没人越界。然后肯定是先调答案错误。原来是加法不算进去,但是算进去了。不对啊 xor2.in
压根没有决策。然后我也忘了是调了个什么东西反正就是出来了。然后还是五秒。
是不是线段树常数逆天了。改成差分,主动多一个 \(\log\) 算了,结果没跑动。删了回档。我记得回的是 12 点的档,这个记的太清楚了。
想一下后面的分数,稍微 assert 了一下样例三好像是拿 \(a\) 小的会有答案(还是拿 \(a\) 大的,记不清了),因为时间不够了,就枚举了一下,过不去样例三,枚举了一下排序方法无果。
时间不够了。
T3,\(m=k=1\) 应该有做法,发现若确定 \(p\),则想找 \(p\times q=q\times p\),满足 \(p[q[i]]=q[p[i]]\),所以,\(q[i]=j\implies q[p[i]]=p[j]\)。随机打表发现应该和置换环有关系,但是缩点不对,然后比赛结束了。
13:00
DengDuck 同学面基,声称他 12:00 过掉 T1。我不评价。
牛角包很好吃。拿了两个。然后发现我今天带了士力架。
冷静想了一下发现 T3 \(m=k=1\) 时答案是 \(\prod_ic_i!(i!)^{c_i}\),\(c_i\) 表示长度为 \(i\) 的置换环长度。还没对过样例 4,不想对了。T2,排序的时候把到达不了了去掉而不是 break 掉。(额我在说什么……?)
然后情绪有一点低,分析一下,这场比赛就是
- 开场 2h T1 浪费了时间
- 题目好难
- 开场 15min 浪费了时间
- 紧张
- 你的常数疑似有点过于极端了
buff 叠多了
明天的比赛疑似可以放松一点,因为现在流行 Day 1 > Day 2。不能太急,回想一下 T1 就是太急了,写了假的东西。T2 就是能力问题不用管,T3 可能受到 T1、T2 debuff 影响,应该 swap 一下做 T2、T3 的顺序的。但好像两个都不是很会,平行开的话……如果时间够了好像是能多一点分数的。
松湖莞中饭堂的分量太大了。
20:20
复盘做完了。明天加油。
3.3
8:30
开场读了一遍题目感觉 T3 不可做,其他题感觉有一点初步想法,然后写了 .vimrc 之后是 8:40。已经记不清了,大概是 1.5h 写了特殊性质 A 和特殊性质 B 的 dp,一直写,最后剩下个立方的特殊性质 B。当时可能有点崩溃了,但是心态还行,自信心还在,然后就试了一下 T2。有一些非常简单的点迅速写掉了,然后这个剪断操作的组合计数很扭曲,不敢推,这时 T1 有一个偏向正解的想法,就是我一开始全锁了,然后按照一定的顺序贪心解锁,先解锁那些锁了没有的石像,然后按照后序遍历解锁,就是性质 A 的尝试扩展。然后一直写一直假,性质 B 的样例过不去,样例一都过不去。然后枚举了一些感觉可能的排序方法都不行。这时就相信大家都不会这题了。T2 开始推一下后面的忘了性质几,写了一个枚举字集转移的一个复杂度很大的 dp,然后发现所有段的排序的顺序钦定没有那么显然,写了个全错的 dp,只过了样例一和三。然后就是 T1 和 T2 轮流搞,除了发现 T1 有个 25 分大暴力没写写掉了以外没有更多分了。然后就结束了。
然后就退役了。写这段的时候很晚了,退役感言周末再写。
13:00
接到了要回学校的通知。
话说,忘记测松山湖水深了。考试的时候看到楼下的一大片碧绿的潭水,应该就是松山湖了吧。松山湖一眼望不到头,树荣草盛,在这种环境上打比赛,即使打输了也不会再有遗憾的吧?
也不会再有遗憾的吧?
退役宣言
本文来自博客园,作者:caijianhong,转载请注明原文链接:https://www.cnblogs.com/caijianhong/p/18041427/traval-in-gdoi2024