NOI2020 同步赛划水记
因为太菜了没去现场参加 NOI
就算去了估计也只能混个Fe(雾)
“两天都会各有一道签到题,争取拿到70分。剩下的题每道题打30分暴力。每天130分,就能稳拿Ag了。”——ls
Day 1 - 2020.8.18
真·前一天晚上奇迹般地 22:30 就睡着了。
8:30 吃完早饭在电脑面前等待考试。
服务器炸了 10min 差评。
8:40,服务器算是修好了,点进去一看:“你访问的页面不存在”。
8:45,终于可以正常开始考试了。。。。。。
我只能说,CCF dl。
早上还有点儿困啊,考试前 30 分钟心情也没那么紧张,所以考试前 30 分钟几乎啥也没干。。。。。。
先看 T1。不愧是签到题啊。\(\mathcal O(nT)\) 的 \(dp\) 算是连刚学 OI 的萌新都会的吧。
然后再套个广义矩乘优化就可以过了呢。
欸等等,好像还有不少细节要注意,\(1 \leq w_i \leq 5\),就是要把 \(dp_{i,j}\) 到 \(dp_{i-4,j}\) 都压缩到一个矩阵里?我咋觉得有点儿问题呢?你这转移矩阵咋求呢?
不管了,先看 T2。欸,这 32 分不是送的吗?不过是在这题的基础上套个树链剖分吗?
于是开始码,然后发现自己树剖都不会了,竟然在第一遍 \(dfs\) 的时候就求出 \(dfs\) 序,果然是考场犯浑选手啊。除此之外还有不少 sb 的错误。调好后 2h20min 过去了。
去看 T3。哇这个 T3。。。送了好多分欸。前 6 个点暴力 BIT 都可以解决。后面那个 A 用莫队+BIT可以做到 \(\mathcal O(n \sqrt{n} \log n)\),开个 O2 说不定能过呢。那个 C 也巨水无比,那总方案数减掉不合法的方案数就可以了,总方案数用二维数点+二维前缀和可以求。这样一来我就有 52 分了呢。
怀着无比兴奋地心情开始码代码。平方的很简单,20 分钟不到就写好了。
可是写 A 的时候遇到了和 T2 同样的麻烦:忘了莫队怎么写了。我曾几次三番地想要点开以前的程序,但一想到 NOI 同步赛的考试规矩,只好默默关闭了窗口。
一晃眼 40min 过去了,大样例过了。调了下块长,发现块长 \(S=233\) 的时候跑得最快,但是 \(n=10^5,m=2 \times 10^5\) 的数据还是跑了 6 秒。只能祈祷神一般的评测机了。
至于 C,虽说口胡起来挺容易,但是还是写了 30min。
现在已经 12:45 了,你这个 A 题准备怎么样呢。
当时的心理是,算了这毕竟是 NOI。想着 NOI2015 寿司晚宴虽说也是 NOI 的签到题,但是你不也绞尽脑汁折腾了一晚上+一早上才把它独立搞出来吗?所以还是保守一点写个暴力吧。说不定这题不是矩阵乘法,跟 dp 一点关系都没有呢。
于是花了 20min 写了一个 50 分的暴力,剩下时间全部用来划水。
预计 50+32+52=134,lg 测一分没挂,不知道 CCF 官方成绩如何。
考完和别人聊天才发现原来 T1 就是矩阵优化。我那个想法离正解只有一步之遥。
看来还是要相信自己嘛。
不管了 Day 2 继续努力吧。
Day 2 - 2020.8.19
更加自闭的一天。
前一天晚上又是 22:30 就睡着了,创造奇迹。
今天早上服务器没炸,8:30 准时开始考试,好评。
拿到手先把三个题扫一遍,感觉分都不太好拿啊。
这 T1……smg 啊,感觉像网络流……不对,不是网络流,应该是道思维题,先跳过吧。
这 T2……题面劝退能力太强了。光是题面就够我啃 15 min 了。懂了题意,还是不会做可咋整啊。
这 T3……那诡异的条件怎么用还是个问题呢。
1h 过去了。
没什么好写的,从头再看一扫一遍题面。
这 T1……我有个贪心的做法,但是作为 NOI 的题应该不会这么水吧,那应该是假的。跳过。
这 T2……好像我有 12 分了,不过我的眼界应该不只局限于这 12 分吧。
这 T3……我的妈这几个部分分一个都不会啊/kk
折腾了 1.5h,还是觉得 T2 比较可做,就去写 T2。
好好想了一下感觉 \(h \leq 4\) 和特殊性质 \(3,4\) 都比较容易,开始码代码。
因为比较自闭,就写一段时间划一段时间的水,手速也没那么快。大约 3h 的时候码完了吧。
36 分应该有了,虽然花了大把的时间但是至少心理上得到了安慰了。
去看 C,想尽了各种方法,却发现连暴力都不会打。
没办法,只好输出 \(-1\) 骗分了。这种题输出 \(-1\) 至少能拿个 5 分吧。
好自闭啊,还真是 Day2 只比 Day1 难亿点点。
回去看 A。欸,15 分暴搜我会。但可惜我不想写,打到一半就索性全部删掉重新开始了。
说不定写个贪心能过 \(n \leq 4\) 的点呢。
于是开始写之前想的那个贪心。人脑模拟了一遍样例。竟然能过。看来出锅的可能性应该不太大吧。
继续去测大样例 \(2\),\(10\) 个挂 \(4\) 个。淦,真就“出锅的可能性不太大”呗。
我也不知道当时我怎么想的,可是得知样例 \(2\) 挂了之后就去测样例 \(3\)。
出乎意料的是,样例 \(3\) \(n \leq 500\) 竟然 \(10\) 组数据一组都没挂。
由于好奇心,我点开了 dish2.in
和 dish3.in
。
我知道原因了,原来样例 \(2\) 中有 \(m=n-2\) 的情况,样例 \(3\) 中没有。
看来我这个贪心可以正确处理 \(m \geq n-1\) 的情况。那我岂不是又有 \(20\) 分了?
进一步分析样例。欸 \(m \geq n-1\) 的时候不会出现 \(-1\)。
那 \(m=n-2\) 的情况岂不是只要将 \(n\) 个原料分成两部分,其中一部分的 \(a_i\) 的和是 \(k\) 的倍数就可以了?
然后写了一下发现不对,也不知道是咋回事。
哦原来仅仅是 \(k\) 的倍数还不行。假设你选出的集合为 \(S\),那么必须有 \(\sum\limits_{i \in S}a_i=k(|S|-1)\) 才行。
然后码了一个暴力,\(45\) 分到手了。其时已 13:10。
想交,结果发现登录过期了,密码什么的我也没记住,只好重新登录一遍 noi 的网站看密码。浪费了我 5min。
虽然只剩 15min 我也不指望我能再拿什么分,但是我还是想进一步想一想 T1。
之前那个算法好像可以用背包优化。令 \(b_i=a_i-k\),我们只需找到一些和为 \(-k\) 的 \(b_i\) 就行了。
时间复杂度 \(n^2k\)。
淦这货竟然能拿 \(85\) 分。可惜只剩 10min 也来不及写了。
期望得分 45+36+0=81,zbl。
啊我的 Ag 没了啊啊啊啊啊啊!!!!!!
所以有什么想法,如果实现起来不困难,就算不一定正确最好也写一写。如果今天我先写 T1 说不定那 85 分就拿到了呢。
实测 Day2 T1 挂了 20 不知道怎么回事,T2 挂了 12——\(h=4\) 写挂了,特殊性质 3 也挂了,特殊性质 4 挂一个点。T3 还莫名其妙得了 5 分
25+24+5=54,zbl
两天加起来 134+54=188,达到了 Ag 的分数线。
综上,今年的题目是:
一位擅长 制作菜品 的 美食家 在 翻修道路 时发现了一颗 超现实树,通过不懈的追问终于明白了一个人最终的 命运 就是成为 时代的眼泪