2023 春季联赛游记
本来不打算写游记的,但是想到自己就要退役了,觉得还是得留点东西。
\(\text{sleeping_crawlers}\):你这么菜还卷什么卷,赶紧去写游记。
于是这篇游记被连夜补出来了。
Day -2
地理学考
感觉要准备三战了。
Day -1
生物学考
感觉题不是很难,但是可能得二战。
Day 0
物理,化学学考。
物理比较简单,但是由于没有复习,不知道能不能 A。
化学有机一点不会,连蒙五道,准备二战。
上午考完下午两点火车去秦皇岛。
车上本来是第一排中间,结果两边的人是一起的,我换到了外侧,然后没有小桌子,只好听歌睡了一路。
到酒店的时候快 7 点了,住的豪标,感觉房间确实不错。
下楼吃了个酒店自助,然后回房间 vp 了一场 Div.2,前 4 道都挺简单的,但是还没写完 D 就被老师叫去开会了,老师说了下老生常谈的注意事项就把我们放回来了。
不知不觉间说不定已经是最后一次比赛了啊。
Day 1
早上 7:30 的大巴车去燕大新校区,8:00 左右到考场。
8:30 发密码了,突然发现装键盘的那个台子只能拉一半出来,赶紧跟监考老师反映了一下,然后换到最后一排去了。
试了一下键盘,虽然看着比较旧,但是竟然巨好用,跟 4 机房的双飞燕差不多。
先开 A,脑子一团浆糊,没什么思路,看到 \(n \times m \leq 10^6\),以为 \(min(n, m) \leq 1000\) 是个有用的性质,导致思路逐渐偏离正解。
然后想着维护 \(n\) 棵线段树,支持整体覆盖,单点修改,单点查询。又把 \(q \leq 10^5\) 想成了 \(\sum q \leq 10^5\),觉得行操作可以 \(O(1)\) 修改,列操作可以 \(O(n\log m)\),虽然过不了但是还可以就先写了。
写了 1h 过了样例,复杂度还有点问题,又觉得可以二维线段树,但是可能码不出来。
然后想不到什么更可做的方法了,感觉这样下去可能药丸,就去开 B 了。
显然到三次方就只有 \(10^6\) 个数了,打表算了一下所有次方需要枚举数的个数和,发现非常少,打算先写个暴力。
写着写着发现平方的情况直接 \(O(1)\) 开根特判一下就完了,大概不到 10 分钟就码完了,结果过不了大样例,有点怪。
看了十几分钟意识到可能是 \(qpow\) 爆 \(long\ long\) 了,重新回去看了下打表的代码,发现打表写的是自带的 \(\text{pow}\) 函数,所以没问题,那我直接把表粘过去好了。
过了大样例之后就扔了,完全没有意识到问题的严重性。
重新回去看 A,发现只有整体覆盖单点修改而已,就预处理了一下每个点在线段树上的编号,这样列修改就变成 \(O(n)\) 了,总复杂度就是 \(O(qn + nm\log m)\)。如果 \(\sum q \leq 10^5\) 的话刚刚好……我甚至还拼了个 \(n,m\leq 1000\) 的暴力……
接着去看 C,发现状压 \(\text{dp}\) 白给,而且有高达 \(60\) 分,就没去想正解了,其实应该想想正解的。
刚开始写了个枚举转移,写了两行就发现转移顺序不太对,就改成了 \(\text{bfs}\) 转移,调了调过了样例就没管了,顺便把性质 \(\text{B}\) 也写了。
其实这个时候已经想到正解应该是区间 \(\text{dp}\) 了,但是时间只剩下 1 个多小时而且 D 还没有开,就没想。
开 D 发现 \(k = 1\) 是白给。然后想 \(k = 2\),刚开始以为这题跟卡牌的题意是一样的,觉得没有那么简单,但是仔细思考了一下发现也是白给,小的放上面大的放下面就行了。
看了看 \(k = 3\),感觉可能不太可做就先把暴力打了。
写完之后只剩下不到半个小时了,又回去看了看 A,还是不会,也不想写其他的东西了,检查了几遍文件,开始思考人生。
思考了几分钟决定还是去 \(\text{Linux}\) 上测测,但是写了几遍编译命令都没写对,放弃了。
继续思考人生。
出了考场发现人均 300+,而我最多只有 310,自闭了。
火车上测了下 \(B\),发现没写 \(sqrtl\),最多会被卡 \(20\) 分,而且 \(k \geq 63\) 的我输出的 0,自闭了。
希望 \(ccf\) 数据别太强。
Update
出分了。
100 + 95 + 70 + 40 = 305
A 题没挂,其实我的代码没常数,本来就很难卡,\(ccf\) 的数据卡不掉也算正常。B 题只因为 \(sqrtl\) 的精度挂了 5 分,所有的数据 \(k \leq 2\),感谢 \(ccf\) 不杀知恩。