ZJOI2020游记:一次不一样的ZJOI
开坑小记(\(Jun\ 19th\))
由于疫情原因,这次的两场比赛被放在了周六周日连续两天。
我也不知道这种变化对我来说究竟是好是坏,当然更可能是毫无影响(弱就是弱,不管怎样都是弱)。
停课也停了一个多月了,也不知道这段时间做的题到底有没有给我带来什么进步。
更重要的是,心中还担忧着下周的中考,完全没复习,且社会又变成了开卷考(停课一个月以前背过的东西完全忘光了),这样的我恐怕凉凉。。。
正式前言(\(Jun\ 28th\)补记)
省选结束后忙于准备中考(尽管依旧考得不怎样),因此这篇游记开了个坑之后就一直没去补。。。
现在中考完了,就滚回来补游记了。
\(Jun\ 19th\)
上午:最后的准备
上午就来了机房,打算最后敲几发板子。
突然发现洛谷上居然有吉司机线段树,这东西我只知道理论,根本从未写过。于是试着去写了写,结果调出来一堆\(bug\),然后发现从根本的状态存储方面就出了问题,想想改起来太麻烦最终写了一半就弃掉了。。。
接着又找到拔山盖世的板子,尽管觉得肯定不会考,但由于之前并没有写过这个板子,最终还是决定去写一写。这次倒非常顺利,一遍过了。这种东西不一遍过才不正常吧。
最后在临出发前写了一个\(FST\)的板子:【洛谷6097】【模板】子集卷积。感觉最近对于多项式稍微有些入门了,不过要面对\(ZJOI\),蒟蒻的我依旧不堪一击。
出发
下午乘坐高铁出发。
高铁上没网,只好默默地写了一道题:【洛谷2150】[NOI2015] 寿司晚宴(后来到宾馆之后才交的)。
实际上还口胡了另一道题,但数据范围看小了,结果自然就伪掉了。
宾馆
这次我们学校一共来了七个人,一个高二、四个高一、两个初三。
由于同为初三,我和\(LYP\)神仙分到了一个房间。
晚上主要以看板子为主,看\(LYP\)神仙写一道线段树合并的板子题写了挺久,于是也去写了一发。
一波盲猜
晚上睡前盲猜了一下明天会考些什么,于是就奶了一波:
- 我相信明天\(T2\)绝对是线段树,因为最近几年\(ZJOI\)基本上都有线段树。
- 我相信明天绝对不会考字符串。
\(Jun\ 20th\)
洛谷运势:凶
早饭吃手抓饼。不知道我对自己的食量哪来的自信,居然点了两个,最后吃到撑死都只吃了一个半。
考前看了看洛谷运势,发现今天运势是凶。
说是说凶,实际上根据我过去的经验,似乎凶才是我的大吉?
以前做牛客网的“一战到底”,每次运势为凶的时候都会遇上特别简单的题目,第一次凶的时候险些就上了排行榜,第二次凶的时候直接上了排行榜的\(Rank\ 2\)(尽管并没有多少人做这个东西就是了。。。)。
因此,在心理作用下,今天的我似乎还是比较有自信的。
\(Day1\)
点开题面,\(T1\)就是字符串题。。。(脸直接被打烂了)
咦?\(T2\)难道不是线段树?等等,传统艺能?好吧,你线段树还是你线段树。。。
首先完整地看了一遍题面。
\(T1\)由于最近做了挺多后缀自动机题,有种莫名的自信。
\(T2\)总感觉和去年的\(T2\)非常相似,反正看看都很不可做。
\(T3\)一种\(AtCoder\)的既视感?感觉很有趣,但应该也不是非常可做吧。
最终决定先开\(T1\)。很容易想到一个\(O(n^2)\)的暴力,写完测了测样例,结果猛然发现此处位置不同的串只计算一次答案?!
一下就慌了起来,想了好久都只会\(O(n^3)\)的超暴力做法,单个询问的部分分想了快两个小时的后缀自动机都没能做出来,最后只好先写了超暴力暂时放着。
再去看\(T3\),本来没啥思路,看完样例解释却莫名其妙地有了些奇怪的想法,最后先胡出一个\(O(n^4)\)的\(DP\),然后轻松优化成了\(O(n^3)\)。
居然就这样拿到了\(50\)分?
接着只好极不情愿地开了\(T2\),结合去年的\(T2\),打算设\(f_{x,i}\)和\(g_{x,i}\)分别表示\(i\)次操作之后,该点权值为\(1\)的概率以及该点到根路径上存在权值为\(1\)的点的概率。
一看似乎这样一写也才\(30\)分,但既然没有别的做法,也只好试着去推式子。
最终,经过一个多小时的苦战,终于写完了这个\(O(nk)\)做法,\(30\)分到手。
再就是试着找出完全二叉树的规律,打表搞了半天啥都没搞出来。
回去看\(T1\),突然发现一个二维数点的两只\(log\)做法(树状数组套树状数组,尽管是第一次写这种东西,但还是非常好写的),写完测了测极限数据有点卡,但信仰开\(O2\)之后是能过的,预计能得到\(40\)分了。
(PS:考完之后突然发现这个东西只要改成扫描线就可以一只\(log\)了。)
(PPS:听说还有更加简单的暴力做法,但我不会。)
还剩半个小时左右,感觉\(T1\)和\(T3\)都没啥得分空间了,又回头看\(T2\)。
猛然惊觉\(T2\)的\(DP\)似乎可以矩乘优化?!
手速写了一发,大样例跑了\(10s\)之后居然得出了正确答案?!
然后加了一个矩乘的基本优化:循环展开。这个卡常效果果然好,一下就变成了\(4s\),相信开个\(O2\)还是能过的。
由于时间比较紧来不及对拍了,有点虚。
最终估分\(40+100+50=190\),但愿\(T2\)不要挂。
下午&晚上
翻\(bzt\)博客,主要是找了些比较有趣的题目看了看。\(bzt\)这么强肯定要进队了\(\%\%\%\)
睡前开始日常翻游记。。。
\(Jun\ 21st\)
\(Day2\)
看完题面一脸懵逼。
\(T1\)什么鬼?光树的情况就非常麻烦了,结果还有基环树?果断放弃。
\(T2\)题面非常清新,简洁又很好理解,一眼生成函数。
\(T3\)好诡异,开局就写了一个\(10\)分的暴力,结果跑样例的第一个小数据就跑了\(50\ min\)(你没看错,我并没有写错单位),弃了弃了。
于是开始肝\(T2\)。
大力推了一波式子,先搞出一个粗暴的\(O(n^3)\)的做法,感觉应该还能进行什么五花八门的优化。
大致思路就是令\(g_i\)表示摸出\(i\)张不同种类的卡牌的期望步数,然后枚举要摸出几种卡牌来计算答案。
结果,四个小时过去了,我依旧爆零。至今仍不知道究竟是式子推挂了,还是实现炸了。
最后的一个小时就是疯狂写部分分。
先对\(T2\)小数据写了个状压\(DP\),然后对于\(3\)个特殊数据分类讨论(我之前推出来的式子处理这种东西还是有点用的),花费半个小时写了\(40\)分。
然后是\(T1\)的\(3\)个特别简单的部分分,估计能得\(15\)分,也来不及检查了。
最终估分\(15+40+0=55\)。
归程
回去的时候坐在闪指导旁边,没啥心情学习(尽管过几天就要中考了),于是就看闪指导打游戏打了一路。
感觉自己还是太菜了吧。
成绩(后记)
\(Day1\):\(40+100+50=190\),居然没炸。
\(Day2\):\(5+40+0=45\),\(T1\)的分类讨论挂了么。。。
不过实际上考得怎样对我来说都差不多吧。根据闪指导的话,反正联赛成绩摆在那里,再怎么努力也都只是徒劳。
更何况,这次\(Day1\ T2\)能做出来,完全就是靠运气而不是凭实力,如果没做过去年的线段树那题,我怎么可能考场做出来这种题?
不过,达成了\(ZJOI\)考场切题这一成就,还是挺高兴的吧!