NOIP 2023 游记
这是退役战吗?
Day -1
上午模拟赛,感觉不是很有意思,当一乐子了。
下午写 CF 练手。
晚上开了 5 题 div2,并且最后一题只有 *2000,遂 AK。第一次 AK div2,激动。
Day 0
上午写了点 CF 水题 + 模板。一上午十二题。
下午出发去杭州,感觉今年两次都比之前快很多啊。
酒店房间设计好像有点反人类。
得知和【】在一个酒店,没有然后了。
晚上写游记。怎么有人疯狂星期五的/kx
用 disocrd 的 lockout 随机跳了 2100-2400 各一题
2100冰淇淋机,2200博弈DP,2300计算几何(卡精度真恶心),2400优质贪心。
这都开了些啥玩意。当攒RP。
UKE好几发,也当攒RP吧。
Day 1
惯例很早进考场。
今年怎么换了个门进?
写头 5min,其实感觉是在适应键盘,一开始经常按错键,可能是键大小不同导致的。
开 T1,思考了一段时间,然后发现看错题目了,原来每个字符串的交换次数是任意的。那显然选的那个字符串升序,其他降序排序就好了。
其实就是比较选的字符串的最小的字符和剩下的最大的字符。发现如果一样的话是不合法的,所以就是严格大于!
写完 T1 大概过去 20min。开 T2。
感觉一眼 2-sat,但是这是 NOIP 怎么可能考 2-sat 呢?
显然需要先模拟一下操作看看最后每个变量是什么,用 \(-1,-2,-3\) 代表 \(\texttt{T,F,U}\),然后用 \(2i\) 和 \(2i+1\) 代表 \(x_i\) 和 \(\lnot x_i\)。
一开始有点 dinner 还在那里乱判 \(\texttt{U}\) 的个数,手玩了下 \(n=10\) 的大样例,然后发现只需要弄个种类并查集维护一下相同和不相同即可。如果有 \(\texttt{U}\) 或者自己和自己取反都在同一个,那么整个并查集就是 \(\texttt{U}\),打个标记就好。
这个时候大概 1h 20min。
看了眼 T3 和 T4,T3 一眼致敬贪吃蛇,但是只会 \(O(qn^2)\),猜猜都知道正解是 \(O(nq)\)。T4 随便想了一下发现自己回 \(O(nk)\),简单分析发现可以变成 \(O(mk)\)。两题加起来差不多能凑 \(100\) 分左右。
上个厕所冷静下。发现 T3 不是很可做,搓了一个暴力扔了。
开始搞 T4。设 \(f_{i,j}\) 为时间 \(i\) 连续 \(j\) 天打卡的答案,写了 DP 转移方程式,感觉是一个比较像 slope-trick 的东西,发现只有所有的 \(l_i-1\) 和 \(r_i\) 才会改变是否打卡的状态,因此就成了 \(O(mk)\),发现这个东西很好维护啊。
需要区间加,查询最大值,插入值,区间偏移。
直接动态开点线段树就可以做,开个变量记录一下偏移值就好。
时空复杂度均为 \(O(m\log n)\),差不多 \(260\texttt{MB}\) 空间,
稍微想了下偏移值处理的细节,想了挺久的加减以及初始偏移值。然后开始写线段树,感觉这种操作比较复杂的线段树(毕竟是用来优化其他东西)用 namespace
写一个线段树然后用写几个函数接口还是挺方便的。
很快写好了,发现小样例都过不去,发现是 \(x,y\) 看反了,稍微改了改过了小样例,但是第二个样例就寄了。
感觉线段树写挂了,粘了一次把线段树改成暴力试着对拍,发现 \(O(nk)\) 暴力都过不了大样例。
试着输出整个 \(100\times 47\) 的 DP 数组,感觉很对啊。
感觉有点绝望,是不是解法假了?一直在试图 HACK + 静态调试,然后发现排序的地方 \(x,y\) 没改,,,
然后发现大样例跑了 \(5\texttt{s}\)?刚准备卡常,发现原来是刚刚调试为了方便观察输出把 cin/cout
解绑注释了,wssb。
开了 O2,开满的大样例差不多就是 \(2.0-2.1\texttt{s}\)。杭师大 i3 7300 怎么能和 CCF i7-8700K 比,题目开 \(2\texttt{s}\),随便过。
写了个拍子挂起来拍,然后想 T3。
拍了几千组之后差不多,还剩下 1h。
思考 T3。
转化成矩阵上走,发现任意两行之间能走的一个是另一个的子集(取决于大小),然后试着用这个性质搞了一下发现还是不大会,连带 \(\log\) 的好像都不大会。考虑到已经过了 \(3\) 题了,于是开摆。
给 T1 对拍,然后是每道题都静态查错,发现 T4 (ti[i]-las)*d
这个地方没开 long long
,于是赶紧改了下 maker
的值域继续拍,然后另一边继续看看有什么地方没开 long long
, 不过没有找到,应该问题不大。
最后检查文件名,删了非 .cpp
(辅助程序留着赛后复盘吧)。
估分 \(100+100+35+100=335\),实际挂成 shit。
出考场,感觉人均 \(3\) 题,队线 \(400\)。
出来集合的时候和傻子一样在校门内等,最后发现大家都在门外的门口集合,大家一起等老叶和大巴。
遇到了 ywzx 的几个同学,交流了一下解法。
?洛谷怎么 T2 \(60\)。
T2 模拟的时候把 \(\lnot \texttt{F}\) 写成 \(\texttt{U}\) 了,你好。
T4 发现可以离散化然后做到 \(O(m\log m)\),而且被各种地方都卡常了,你好。
Luogu:\(100+60+40+88\)
云斗:\(100+90+35+64\)(云斗机子有点慢,被卡常了?)
Day 10
实际得分:\(100+70+35+100=305\)
T2 虽然最坏 \(60\) 但是 CCF 多给了 \(10\) 分(第一个测试点)。
T4 官方数据自测,在 洛谷、LOJ、CCR(windows,i5-12500)都过不去,在 Arbiter 过了(i5-12500 \(1.746\texttt{s}\)),想必 CCF 那里估计是压着过的。
Arbiter 好闪,拜谢 Arbiter!!!111
Arbiter 好闪,拜谢 Arbiter!!!111
Arbiter 好闪,拜谢 Arbiter!!!111
Arbiter 好闪,拜谢 Arbiter!!!111
Arbiter 好闪,拜谢 Arbiter!!!111
Arbiter 好闪,拜谢 Arbiter!!!111
Arbiter 好闪,拜谢 Arbiter!!!111
Arbiter 好闪,拜谢 Arbiter!!!111
Arbiter 好闪,拜谢 Arbiter!!!111
Arbiter 好闪,拜谢 Arbiter!!!111