SNOI2019场外VP记
教练突然说要考一场别省省选来测试水平...正好还没看题那就当VP咯w...
Day 1
八点开题打 .vimrc
.
先看了看题目名...一股莫名鬼畜感袭来...
怎么T1就是字符串鸭?HEOI 2019 D1T2的心理阴影为啥我会xjb套那么多东西上去啊QAQ...T2数论T3通信? 不好的感觉...
读了读T1, 神仙字符串排序, 溜了溜了
读了读T2, 模两个模数同余? 溜了溜了...
读了读T3. 诶这个东西怎么这么费用流啊? 看看数据范围...诶这个 (n) 才 (1000) 啊? (n^2) 条边暴力建图信仰一发是不是就可以了鸭?
等等好像有 (80\%) 的数据 (nle300), 这个数据范围费用流好像稳稳啊? 赶紧码...
(20 exttt{min}) 之后码了个费用流板子码得真慢, 一遍把样例A穿了, 爽翻.
交上去之后回去看T1.
冷静分析了一波, 发现好像和某道要花式求后缀数组的题很像, 对原串求个SA然后分段求LCP来得到两个要排序的串的第一个不同字符的位置, 这样就可以 (O(1)) 比较两个串了. 能比较之后丢到 std::sort
里这题就做完了.
这才是T1嘛233
码了半拉小时之后Pretest Passed.
这时候时间过去 (90 exttt{min}), 当时我就觉得我稳了, 于是上了个厕所准备正面刚T2.
思考了一会之后感觉除了知道这东西有个长度为 (operatorname{lcm}) 的周期之外就啥也不知道了.
那个 (operatorname{lcm}(P,Q)mid T) 的部分分好像明示要先想想一个周期里的情况...还能有啥啊? (operatorname{lcm}(P,Q)=frac{PQ}{gcd(P,Q)})?
等等分母是 (gcd)?
想起「Bézout's Lemma」
也就是说只有 (A_iequiv B_jpmod{gcd(P,Q)}) 才会存在某个 (x) 满足 (xequiv A_ipmod P) 以及 (xequiv B_jpmod Q) 咯?
(P) 和 (Q) 除掉 (gcd) 之后就互质了, 根据CRT这个差除以 (gcd) 的值是有唯一解的? 也就是说一个循环里 (A_i) 和 (B_j) 相遇且仅相遇一次咯?
感觉挺靠谱的, 好像能拿 (40) 分了. 这样的话就可以把 (T) 模掉一个 (operatorname{lcm}) 了. 问题只剩剩下的值了qwq...
好像搞出关键结论了正解也不远了? 是不是把一个 (gcd) 长度的块看成一个整体然后再给这些块按照另一个模数的访问顺序排成一个环然后直接在这个环上二分就可以了得到 (<T) 的匹配数了鸭?
YY了一下好像以 (O(nlog n)) 的圆满复杂度解决了这个问题. 虽然感觉超级难写但是还是作死开始写.
写了一个多小时果然弃疗了, 删掉了二分的部分改成暴力从 (0) 到 (Tmod operatorname{lcm}) 枚举了.
剩下的时间摸掉了.
出分, (100+80+80=260)? 啥玩意?
怎么这个T2数据可以这么水啊...是不是故意构造的鸭...
校内rk3, 前面是两个 (280) 的神仙.
hahamengbier&Jumbo用KM二分图最大权匹配碾掉了T3还顺手拿了LOJ榜一.
神仙hzoizcl用玄学NTT干掉了T2...wtcl...
看了看noi.cn的成绩公示好像已经上队线了?(woc我也想去SN了码单)
Day 2
由于前一天题比较水于是莫名感觉能上400(flag)
开题.
淦哦怎么上来就开始麻将计数了? 跳跳跳...
跳到T2之后看见配图感觉一阵更浓的鬼畜感袭来...
T3是啥神仙数据结构趴? 等等这个 (5 imes 10^6) 好像数据结构不太会能做鸭? 算了打个暴力跑路趴T_T...
完蛋, 二试被翻盘的节奏不对啊反正day1就已经上队线了我慌什么快醒醒你不在SN这不是你的省选
虽然这个T2看上去就很坑而且没有部分分, 可是我偏要玩玩(提答多好玩鸭)
玩了一会, 好像只要 o
不在该在的位置都可以用一步移动让两个坏块成为好块?
诶好像一直这么翻可以把所有联通的坏块都干掉啊? 那我是不是翻完一整块找下一个整块就可以了?
走过去产生的新坏块好像会在fix旧坏块的时候顺便fix掉? 那岂不是稳稳了?
是不是得找最近的鸭? 脑抽感觉找最近的好像得用k-DTree...算了趴...
于是YY了一个智障寻路算法, 每次找坏块集合里的第一个然后在所有可行走路方案中选最接近那个坏块的.
感觉好难写好难写, 于是回去搞T1.
大力猜测了一波, 看了看这个数据范围感觉怕不是对于 (n imes C) 的情况有 (O(1)) 式子...诶然后再补集转化一下用 (O(XC)) DP出选少了的情况是不是就可以了啊?
头铁搞了一会 (O(1)) 式子把自己搞自闭了.
搞 (O(1)) 式子的时候感觉这东西好像只判合法性, 也就是说可以用顺子把模 (3) 不同余的部分搞掉然后剩下的填刻子?
诶那我是不是可以用DP在状态里记录一下最后两个编号分别有几个顺子没有完成就可以转移了鸭?
好像状态只有⑨种? 那把转移写成矩阵然后分段快速幂一下不就是个⑨题咯?
时间复杂度是啥啊...(O(X imes 9^3log n))? 好像 (Xle 1000) 很靠谱的样子.
感觉超好写, 于是就开始码, 码完又把Pretest A穿了...
交上去之后开始搞T2, 码了一个多小时码出来了, Pretest弱的不行直接就过了, 手捏了一组坏块不连通的数据也过了.
交上 T2 的时候已经 (11:20) 了, 感觉不太能写 T3 状压于是就写了个 (d=n-1) 的sb (10) 分.
剩下时间又双叒叕摸掉了
出分, (100+10+10=120), 大家 T2T3 都是暴力分233
看了看T2代码发现我调试用的 if(++cnt>2)exit(0);
没删...白扔 (10) 分.
神仙 Asttinx64 T2 写了一堆 lambda 于是编译超时保龄了...再加上 static
的debuff好像LOJ上也保龄了...(去掉 static
就A了, 太强辣!)
校内排名又是rk3 qwq...
两天总分 (380).
跑到noi.cn上查了查SN的成绩, 发现这分可能稳A类? 怎么这个ranwen才365啊
下来翻了翻LOJ的AC代码, 发现好像只要把那个找下一个坏块的过程改成DFS就星了...我太菜了QAQ...
所以麻麻我要去SN