CSP 2021 naive 记
一场 CSP naive 三道题 /kk。
Day -1
滑水。
Day 0
划水。
划到一半得知 HN CSP 取消了 /jk ,然后很失望。
下午事情发生转机,公告被删了,果然,晚上发布恢复通知,大反转
然后对 CCF 好感 加了 114514 倍,恢复了做题的信心。
晚上继续划水,打了几个板子,然后随便做水题。
Day 1
上午划水 + 做水题,挺快乐的。
下午正式考试,1 :50 已经到了考场,然后发现监考老师也没有钥匙,一起被堵在门外。
然后钥匙来了,进了门,发现里面还有监考,十分诡异,居然是里面的监考老师不知道换了考场然后把门关了?
后来快 2:20 的时候拿到了解压密码,开始看题。
T1 一开,哇,水题,T2, 哇,有点板,不是直接序列 DP 然后随便设个状态就行了吗?
然后 2:30 开始敲代码,T1 直接 naive 了,直接按照廊桥无限来算一下每个飞机前面有几个廊桥被占,前缀和之后统计以下就行了,然后 Wa on test 1。
之后发现 naive 了,因为有些是可以不占空间的,然后就想出了一个神奇做法:
考虑维护廊桥数为 \(i\) 时的答案以及当前剩下来的廊桥数量,对于每个飞机找到其最先的有廊桥的位置,之后就是答案的后缀加,对于答案的处理直接差分+前缀和就行了,而对于剩下的廊桥,仍然考虑差分,就是把差分数组最前面一个 \(1\) 变成 \(0\) 就行了,直接用堆维护即可。
然后在开考 40 分钟后 开始对拍,一直拍到下考也没有问题。
接下来开 T2, 直接序列 DP,本来以为会像去年一样轻松通过,结果再次 Wa on test 1 /kk。
盯了一会儿没有发现问题,然后写了个阶乘的暴力去验证,结果发现 (SAS)
是不合法的。
然后一阵自闭,最后发现 \(n \le 500\),这不就是区间 DP 经典问题吗,开几个 DP 数组,按照题目定义去转移,结果 Wa on test 2。
又是一阵自闭,甚至输出了 DP 方程组,结果还是没有找出问题,自闭间,灵机一动,我要钦定 \(l\) 的配对!然后直接过了大样例。
接着开了 T3,想了一段时间发现会 \(\mathcal{O} (n^2)\) 的了,枚举分段情况,然后讨论一下,之后就过了大样例,但是没有发现分段情况很少,可以在外面判掉,于是只有 \(60\) 分了。
我又 naive 了。
T4 随便写写,压根没去想网络流,只有 \(10\) 分滚粗了。
期望得分 \(100 + 100 + 60 + 10 = 270\) ,希望不挂。
晚上冥间数据前三题得分 \(100 + 100 + 60 + ? = 260 + ?\),大体分保住了/cy。
upd on 10.23 : 晚上在 infOJ 上测加入结论的 T3, 直接 88 分,应该是评测机问题,等洛谷出来之后再交。
upd on 10.24 : 洛谷自测出来了,加了结论的T3一交直接100分,感觉自己当时 naive 爆了。
upd on 10.24 :洛谷冥间数据得分 \(100 + 100 + 60 + 10 = 270\),希望最后不会有事。