游记 GDOI2023(联合省选)
游记 GDOI2023 联合省选
正在写。
GD-142 广州大学附属中学
Day 0
在 SS 机房复习板子,重新拾起卷积和 SAM,我猜省选会考。依次重新打了一次 tarjan、树剖、dijkstra、exgcd、(ex)crt、fhqtreap、acam、sam、ntt。
下午两点了,高中部的同学要去试机了!祝他们好运。
现在是 2023 年,我将他们的名字抄写在这里,希望明天或者以后这些人当中能有很多个省队:
- 高二:xzzduang(xzd),cp152(cht),chx
- 高一:qzm,alphayangyang,lzj
- 初三:huangjianheng,chenjunlin,zhangtx,syb,以及 HY 学校 pyl,shy,Lucky,hbs,dsy
- 初二:mekoszc,psh,guanzheyun,lq(lq 没有提高一等不知道怎么去的)还有我
- 初一:kly,wzy
看到没有,这就是 SSOI,提前祝贺 SSOI 旗开得胜!!!
Day 1
昨晚因为看了很久板子,看到 12 点多,导致今天早上起来很困!这给我们的教训是:考前一天早点睡觉。
然后在车上狂背 SAM 和 _vimrc 的配置(这次省选也是我第一次在赛场上用 vim,感觉很好用,脱离了鼠标),学校的车是面包车,安全带没有,再加上道路不算太平整,好像坐过山车一样,很晃,手机屏幕转来转去转晕了。不幸的事情发生了:进入考场后,我的眼睛好像有针刺一样,疼痛难忍,紧闭双眼也无济于事。所以我开始冰敷双眼 + 做眼保健操,一直做到宣读考场纪律才稍微好了点。
08:30
提前三分钟下发密码是 GDOI 传统吗?
(打开 C:\Program Files (x86)
)“哇装了好多东西,甚至有翼课网”
(Windows+R)“哇有 cmd 能用” “你这个 g++ 怎么显示找不到”
这台电脑像新的一样。用了 30 分钟进行配置并且看完了题目。
09:13
T1 看上去非常能做,首先固定方向,然后将一段轨道拆成很多条小轨道,然后 bfs,然后取出所有终点就是了。很快就写了个暴力出来,过了 \(n=2000\) 的样例。
令我震惊的是 gdb 不能用(无法识别文件类型),想起来上次在石门中学的时候 gdb 也不能用,显示数组过大无法展现。感叹版本太低了,希望组委会好自为之(话说是不是 NOI Linux 下面有能用的,笑死了没用过 Linux)
gdb 不能用,那就只能用祖传 debug 调试了。
09:48
我用了并查集实现这个过程:首先固定一个方向,然后将一条轨道拆分成好多好多轨道,最后查询一下连通性。设 \(fa_{i}\) 表示 \(i\) 右边第一个还没有铺轨道的地方,\(find\) 过去之后给它加一。均摊线性。
你可以发现我写这个东西用了 30 分钟,因为栈溢出一直 RE。曾尝试过开栈,但是 powershell 说我有多余的逗号???
(场外提醒:请使用 )"-Wl,--stack=123456789"
注意双引号
最终用了 dev-c++ 编译程序。
10:00
用了 90 min 终于敲完并上拍子。因为 T2 的题目还没看懂,所以先看 T3。
10:30
好像有二十分:从上往下 dfs,每个点维护一个 multiset
,到某个点时将最大值留下,其余的下放到子树最小值那里去。手动造了几组数据,确信了。看上去不能撤销,让我想想能不能加入。
由于要写一个线段树,所以比较烦,一直写到
11:14
。(由此可见我写题速度有多慢)
测了样例,第一个过了,然后第二个测不了,第三个不测,第四个过了,第五个答案比 .ans 要小几十万,第六个答案也少了几十万。
What?
11:58
调不出来。把线段树初始值改成 \(-1\) 并特判之也没有用。弃了,去看 T2。
首先试图枚举边集。发现复杂度升天,我也不想交个升天代码。
那其实好像枚举边集是没有用的,应该枚举点集,边集就是它们之间连的所有点。所以有一个 \(O(2^n)\) 的做法。
12:20
写了个 dfs 发现好难写,换成并查集。于是有 25 分了。
发现如果是树的话,那么关键点在树上应该是连通的才对,(场外提示:以下错误思路):
- 要么只有两个关键点
- 要么有一堆关键点,且不是关键点的应该是叶子。
所以统计一下就可以了。造了一组数据好像过了,来不及拍了。
13:00
我们收到通知,请各位选手检查暴戾注释并删除,否则全国通报
笑死了。于是删去了代码中所有“死”。
结束了。
\(100+48+0=148\)?
好像很多人都过了 T1。噢天啊是区间并这一经典问题!
黄队说 T3 就是把其他值放到子树最小值中,而且他过大样例了。
dsy 说 T3 后面可以线段树分治。
- T2 树的做法不是那样做的!!!是枚举长度之后切子树,怎么办崩溃了。
- T3 大家都是从下到上放值,我反了,怎么办崩溃了。
我好菜啊。得分骤降。没了。
Day 2
在车上睡觉。
8:40
我配置完了。先开 T1。
T1 好像是巨型分类讨论题……吗?有障碍物怎么分讨啊?
首先特判掉不能动的……然后可能要跑一边奇偶最短路。
一个初步的想法是,因为有 \(2\times 10^6\) 个状态,然后有一些必胜态,一些必败态,边数是 \((4+4+3)\times 10^6\),然后是二分图。要求最优策略下每个点是必胜还是必败还是领带平局。
想起了 abc261h。但好像不太一样,首先复杂度,其次就是说它没有明确的终止状态,形式化博弈再想一下……
那个题目怎么做来着?它首先是一个拓扑,从出度为 \(0\) 的……等等哪有出度为 \(0\) 的点,这不是一堆环环环吗。呃感觉不是这样做的。(场外痛哭中)
呃呃呃先做一下特殊性质。。。第一个是 *,第二个好像这个卒会被逼到角落?第三个怎么判断是卒子反杀还是红将薄纱啊?第四个是让我爆搜?太抽象了不太会。
想了一个做法:就是搜,把红将和黑卒分开,枚举步数,把输赢分成以下三类:
- 黑卒找到一条路径,冲到第一行,中间红将过不来。
- 黑卒反杀了红将。
- 红将围困黑卒。
然后搜红将,把被杀的黑卒干掉,搜黑卒,看看黑卒能不能杀掉红将或者赢。
过不去样例一。
想了一下,你这个东西是错的,因为黑卒的行动是和红将绑在一块的。
所以应该把三个棋子绑一块搜。
然后怎么判断答案呢?oh,不会了,我放弃了。
11:00
选择 T2。
首先可以搜索。
特殊性质 A:只用判断 Bob 有没有合法的方案。
如果连一个二分图,那么可以跑一个二分图最大匹配判断是不是完美匹配。
发现这样过不去更大的,还有两个特殊性质没有用过:
- 左部点到右部点最多两条边。
- 需要判断完美匹配(Hall 定理能做吗?哦,我不会啊)
换一种建图:首先将 \(|T_i|=1\) 的点去掉,然后将一个集合的两种可选的数连一条边。
然后,每条边要选择左端点或右端点;每个点只能被选一次。
特殊性质 B 好像是这个。相当于 Bob 只有两种决策。
特殊性质 C 是固定死 Alice 的决策,那么可能可以跑二分图的网络流。
然后我突然发现不会处理 Alice 的决策了……所以打完爆搜就跑路。
12:30
刚才想了很久的假的 T2。所以 T3 直接 puts("1 0")
了。
但还是有点想法:判断完美数列可能需要先枚举下降的首位,然后枚举一下上升的用了哪些值。但是写不出来了。
13:00
赛季结束。
Day inf
这一次的话发挥不是很好,主要是 D1T3 的结论挂了,D2T1 接近正解但没继续。分数很低。
好久不见,下次再来!
本文来自博客园,作者:caijianhong,转载请注明原文链接:https://www.cnblogs.com/caijianhong/p/17280580.html