【杂文】CSP2019 蒟蒻AFO(假)记
【杂文】CSP2019 蒟蒻AFO(假)记
【初赛前 N 天】
时间:2019-10-15
今晚 \(2012\) 的初赛题做到心态爆炸,选择考计算机基础知识一脸懵逼,填空和后面一道大模拟直接跳过,最后居然还得了 \(60\) 多分。
【初赛】
时间:2019-10-18(day0 前一天)
昨天做了 \(NOIP2016\) \(day1\),原本应该是 \(2s\) 时限的 \(T2\) 老师没注意只开了 \(1s\),然后就被卡掉了 \(5\) 分,今天做 \(day2\) 时又被老掉牙的 \(Cena\) 给坑掉了\(95\),心态爆炸。
(晚上)
一边听 \(y\) 总讲组合数学,一边临时恶补初赛知识点,感觉今晚学到的东西(初赛)比这一个月来总结的还要多很多。果然啊,人在面对险境时总能爆发出不可思议的力量。
时间:2019-10-19(day0)
艹晕车,到考试地点后脑子里面一片混沌,早上刚背的知识点全忘光了。
不得不说单选还是挺水的,结果后面阅读和完形直接原地爆炸螺旋升天,送上来的坑点一个都没踩漏,还有最后一道状压推了接近一个小时没看懂。
对脸懵逼。
下午用网上流传的问卷星测了一下,居然有 \(83.5\),感觉应该是稳了吧。。
【复赛前 N 天】
时间:2019-10-28
九校联考凉心模拟 \(\text{day2}\)。
\(\text{T1}\) 就是个简单期望 \(\text{dp}\),结果死活推不出来,白嫖了 \(50\) 分的蒟蒻递推。
\(\text{T2}\) 神奇的数论推结论然后上 \(\text{CRT}\),也不会,码了个暴力。
\(\text{T3}\) 一眼 \(\text{LCT}\) 板子,但不会写,于是上了个暴力+离线树上倍增。
期望得分:\(50+50+30=130\) 。
实际得分:\(50+20+30=100\),\(\text{T2}\) 卡常没卡过。
(好像只有我一个人上了 \(100\) 哎)
\(\text{Trie}\) 树巨佬 \(\text{lsy}\) 又一次用神奇解法吊打了 \(\text{std}\),可惜的是考场上没调出来。
我真的觉得我的写法非常简单,瞬间就想出来了,而且代码也很好写,不就是个启发式合并加树上懒标记维护动态倍增 \(\text{lca}\) 嘛。—— \(\text{lsy}\)
我好菜啊。
离比赛已经不足 \(20\) 天了,回想起去年的毒瘤题,感觉现在自己去做的话,会做的依然会做,不会做的还是不会。
而据说今年的题会更毒瘤。
唉,等联赛后就直接 \(\text{AFO}\) 了。
时间:2019-10-29
大部分题都可以用 \(Trie\) 树搞。—— \(\text{lsy}\)
\(\text{stOrz}\)
时间:2019-11-1 至 2019-11-3
(电脑E盘被打穿祭)
受机房同桌 \(\text{hyj}\) 诱惑,和他一起从不明渠道下了个破解版的绘图软件 \(\text{AxGlyph}\),打开看了看感觉还不错。。。
第二天早上,打开浏览器提示僵尸网络,虽然感到很奇怪,但因为老师已经发下了考试题目,所以就专心做题去了。
(离考试结束还有两个小时)
题目比较水,闲得无聊又打开了这个软件,惊叹其功能之强大堪比几何画板。
(下午)
僵尸网络又来了,突然意识到事情可能不太对,询问老师又无果,只好换了机子。
(第三天)
周末收假回来捣鼓了一下午,最后让 \(360\) 危险卫士出面搞死了数以千计的 \(\text{virus.vbs.writebin.a}\) 病毒。
开始计算损失:装满了各种软件的 \(E\) 盘被全部打穿;\(D\) 盘里面的学习资料较为安稳,只有少数几个 \(htm\) 遭了殃;至于 \(C\) 盘嘛,教练设置的重启自动数据还原都救不了,才刚开机一小会儿就直接全军覆没。
漫长的查毒杀毒过程中,无所不知无所不能的 \(zth\) 巨佬带着一脸 \(\text{yin dang}\) 笑容走了过来。
等等,放下那只病毒!用记事本打开它,来,让我康康。\(\text{emmm...[aoturun]...}\) 原来如此。那个 \(\dots\) 你那什么病毒,给我留一份哈,我放到虚拟机里跑一下看看
只见他熟练地打开 \(cmd\),用文本模式打开了一个受到毒害的 \(htm\) 文件,在一长段字符中找到了问题所在,并秀了一波凡人看不懂的操作。
zth 太巨啦!
(晚上)
打包的部分病毒样本(疑似)和一只可怜的受害者(上面说到的 \(htm\))被保存了下来(预测以后将会成为高级jc的作案工具)。
哎,你说这只病毒可不可以娘化呢?——把我给坑惨了的 \(\text{hyj}\)
时间:2019-11-12 至 2019-11-14
把所有学过的板子都挨着敲了一遍。
【复赛】
时间:2019-11-15
今天居然没有晕车,顿时心情大好。下午在宾馆闲着没事干看了几篇论文,不知道会不会派上用途。
时间:2019-11-16(CSP-S day1)
第三次来到这座学校,去年的自闭记浮现在了眼前,唉,希望今年不要再翻车了。
(进入考室)
也许是太紧张了,找不到开机键???只得求助工作人员,旁边的小哥一脸诧异地望了我一眼(唔,好尬啊)
开机后迅速码好头文件和快读,看看时间刚好 \(8:30\),于是抬头看大屏幕寻找 \(ftp\) 地址 \(emm....\) 地址呢?都已经到点了,为什么还没有公布啊,难道咕咕咕了?
果不其然,当工作人员拿着 \(U\) 盘依次插入隔壁小哥的主机时我便明白了一切。
应该要等会儿才公布发密码,闲着无聊花几分钟敲了个 \(LCA\),熟悉了下键盘,感觉手感还不错,比学校机房里那个已经老化了的键盘好多了。
\(md\) 谁设计的密码啊,丑死了,输了无数遍才发现后面居然有个问号,解压出来后又只有数据没有题面,喵了眼隔壁小哥,他似乎只有题面没有数据,搞得我差点笑出声来。
最后在 \(rar\) 的准备界面里把 \(pdf\) 强行拖了出来,开始看题。
\(T1\) 题面这么长?难道是大模拟?心里顿时一凉,喵了眼 \(T2,T3\),两个树论?但 \(T3\) 的数据范围有点不正常。
回过来看 \(T1\),反复琢磨了几遍题意,除了要开 \(ull\) 外,貌似没啥坑点,就是个蒟蒻小模拟,随手敲了个递归(突然发现三次大考 \(\text{day1 t1}\) 都写了递归 \(\text{QAQ}\)),为防位运算爆 \(ll\),还专门预处理了一个 \(mi\) 数组。但不知道为什么写挂了,调了一会儿发现了个 \(\text{SB}\) 错误,一发过大样例,测了下 \(64, 2^{64}\!-\!1\) 的极限数据,貌似没啥问题(考完才意识到没有数 \(0\) 的位数,希望不要挂),看了看时间 \(9:20\),和预估的时间一模一样,准备开 \(T2\)。
\(emm...\) 链的部分给了非常诱人的 \(50pt\),果断开链。问题被放到序列上,首先想是否可以继承,发现还真可以,直接 \(dp[i]=dp[i-1]+f[i]\)(\(f[i]\) 表示以 \(i\) 结尾有多少个合法子串),想到这里突然意识到:可以直接在树上 \(dfs\) 的时候顺手就把答案维护了出来。虽然平时写树 \(dp\) 都是边写边思考,但为了保险,还是往深处仔细想了想,似乎没什么问题,开始码码码。。。。
问题是如何得到 \(f\) 数组,一开始写了个栈,但不太好处理,于是换了种写法:用 \(w[x]\) 表示从 \(x\) 到根的路径上第一个可用的左括号位置,设 \(W=w[fa[x]]\) 则有 \(f[x]=(W\!!\!=\!0)+f[fa[W]],w[x]=w[fa[W]]\),一发过样例、中样例,大样例崩溃,由于忘了如何手动开栈,果断上 \(Linux\),顺便把 \(T1\) 的数据也拷了进去,测了一遍发现全 \(A\),看看时间 \(10:19\),比预估早了一分钟。
\(T3\) 链和菊花加起来有 \(60\),先想链吧,貌似可以贪心,保险起见先打爆捜。\(10min\) 后,开始了漫长的 \(debug\) 之旅(\(md\) 写个暴力都能挂),大概半小时后发现输入和我想的不太一样,改来改去始终过不了,仔细琢磨了下题面,涌起一股想要把出题人锤一顿的冲动.
此时这条边所连接的两个结点上的数字将会交换
鬼知道你这里说的 “数字” 是指点权还是节点编号啊!!!害我调辣么久。
过样例后发现还有 \(45min\),想了想菊花没啥思路,老老实实开链。
喵喵喵?
码了七八十行发现思路有问题,唉,开考之前就在不断提醒自己要三思而后行,结果还是太冲动了。
看看时间还剩 \(15min\),这时候应该也翻不出什么风浪来了,于是又把 \(T1,T2\) 捞出来看了看,放到 \(\text{Linux}\) 下再测了两遍。
\(12:00\),收拾好笔和身份证准备走人,喵喵喵?为什么还不结束啊?难道是要延时?工作人员都不说一下的吗?早知道就应该把 \(T3\) 再好好想想了。。。
找了找开始界面发现居然没有扫雷,差评。
出考场后听学校里一个拿了金牌的高三学长说他 \(T3\) 只打出了 \(25pt\) 的链,加起来 \(35pt\),看来这次的 \(T3\) 有点毒啊。
期望得分:\(100+100+10\) 。
\(day1\) 好像人均 \(205-210\),没有区分度,希望明天能拿个不错的分数。
还有半个下午 \(+\) 一整晚的时间可以颓,看番去咯!
(晚上)
听教练说今天的题过于zz,明天应该会柔和一点,考些简单算法、数据结构之类的东西,对我们来说最容易发挥实力。
时间:2019-11-17(CSP-S day2)
晨起路途漫霜雾,迷惘不知何处。
归来寒风等闲度,不如心中愁苦。
也许是因为太冷了,今天进考室的时间似乎比昨天早一些。
还是那熟悉的桌面,不过 \(\text{Dev}\) 被昨天下午的小朋友给弄成了一堆乱码,一时间不知所措,便去询问工作人员,隔壁小哥又一次向我投来了奇异的目光。
好在昨天存的快读\(+\text{LCA}\) 板子还在缺省源里面,看看时间 \(8:10\),飞速敲了个珂朵莉树和半颗线段树放在一边,准备打莫队时解压密码公布了出来,于是放下键盘去做准备工作。解压出来依旧是没有题面 \(pdf\),需要强行拖拽。
今天出题人良心发现给了很多大样例。
\(T1\) 题目描述比较恶心。看起来和一道二分图的题比较像,但这道求的是方案数,应该是计数 \(dp\) 。\(m=2,3\) 的情况有 \(64pt\),研究了一会儿码了个暴力 \(dp\):\(f[i][p][j_1][j_2][j_3]\) 表示考虑到第 \(i\) 种烹饪方法、共做了 \(p\) 道菜、材料 \(1,2,3\) 分别用了 \(j_1,j_2,j_3\) 次的方案数,大力转移即可,\(m=2\) 的同理,由于 \(j_1,j_2,j_3 \leqslant n/2\),所以不需要优化也能轻松过掉 \(n \leqslant 40\) 的数据。
\(T2\) 首先想到的是斜率优化,但限制条件貌似不太好处理,决定先码个 \(64pt\) 的暴力放这儿,等拿到 \(T3\) 的部分分后再回来写正解。朴素思想是用 \(dp[i][j]\) 表示处理了 \([1,i]\) 且最后一段为 \([j,i]\) 的最优答案,时间复杂度 \(O(n^3)\) 。后来意识到可以用一个辅助数组 \(g[i]\) 记录点 \(i\) 的最优决策点(即最后一段的左端点),直接 \(n^2\) 搞定:\(dp[i]=min\{ dp[j]+(S[i]-S[j])^2 \} (S[j]-S[g[j]] \leqslant S[i]-S[j])\),一发过大样例,丢一边准备开 \(T3\) 。
\(T3\) 照着题意随便模拟一下就有 \(40pt\),愉快地敲完 \(n^2\) 模拟,加上 \(15pt\) 的链,\(day2\) \(183\) 到手,加上 \(day1\) \(393\),此时离考试结束还有一个半小时,冲刺一下应该有上 \(400\) 的可能。
目前还有两个任务需要完成,但由于时间的限制,需要舍弃一部分:
\((1).\) 用一种特别麻烦的蠢方法写 \(T3\) 的二叉树情况(\(20pt\))
\((2).\) 尝试 \(T1,T2\) 可能成功的难点突破 \((36pt+36pt)\)。
犹豫了一下,最后决定放弃二叉树,毕竟想出正解的回报更丰厚。
可惜的是,对 \(T1\) 容斥 \(+\) 计数 \(dp\)、\(T2\) 斜率优化的尝试最后都以失败告终,直到考试结束依旧还是这个分数。唉 \(...\) 亏大了。
退出考室后顿时心凉了半截,今天肯定人均 \(203+\),而我因为贪图正解分数的肥美,连 \(203\) 的基础分都没拿全。
期望得分:\(64+64+40=168\) 。
(后来发现 \(T3\) 数据描述中看漏了 “存在一种 \(1\) ~ \(n\) 的排列 \(p\) 使得XXX” 导致那 \(15pt\) 的链也丢掉了,所以只剩下了 \(40pt\) )
总结
\(day1:\) 模拟 \(+\) 树形 \(dp\) \(+\) 爆捜
\(day2:\) 暴力 \(dp\) \(+\) 暴力 \(dp\) \(+\) 暴力树形 \(dp\)
期望总分:\(210+168=378\) 。
今年考了 \(3\) 棵树。
作为一个暴力数据结构选手来说,这本不是坏事,奈何出题人过于 \(dului\),根本不留活路。。。
md 这一年的算法都白学了,到头来啥都没用上,去年高一好歹还码了个最短路,今年居然全写了 dp。
考联赛烂成这个样子,只有退役了。
最后的机房时光在局域网联机 \(mc\) 中愉快度过。
文化课我来啦!
时间:2019-12-2
咕咕 \(\text{F}\) 终于放出成绩了,和预计的一样:\(378\) 。
虽然分不高,但排名似乎还不错?
那就 \(...\)
文化课拜拜啦!
\(\text{SCOI}\) 我来啦!