CSP2019提高组游记

前言

2018年10月的一个下午,才出了考场,我便知道自己是绝没有进复赛的可能了。
2018,注定是我OI史上灰色的一年。
当时,懵懂无知的我,愤愤地想:明年,NOIP2019提高组的赛场上,我一定要一雪前耻!

然而,2019年9月,NOIP2019却永远地消失了……
我只好略带遗憾地准备CSP2019了。


游记

Day 0

15:50

第二节数学课上……
老师问:“信息学的同学一会儿是要去比赛了吗?”
我们:“嗯……”
老师笑了,说:“那好,呵呵……预祝你们凯旋归来啊!呵呵呵……”
全班响起雷鸣般的掌声。
等等,老师是不是以为我们一会儿就要走了?
我们可是要18:00才上车的啊!

16:10

我们溜到机房,开始复习腐作业。

18:00

打开手机,上车。
惊讶地发现有的人在听歌,有的人在腐败,有的人……没有手机。

19:50

到达广州的酒店,我和苏律硕一间房。
惊讶地发现酒店的冲凉房没有帘子,没有墙壁遮挡,只有两片玻璃隔开了卧室和淋浴间……
emmmm……有点尴尬
更尴尬的是,楼下有人引吭高歌,声音万分凄厉,以至于都跑调了。
不可思议的是,酒店的信号十分差。
更不可思议的是,我们的电视居然看不了!

22:30

准时睡觉。酒店的床真是舒服哈!
听老王他们说床太软,不舒服?


Day 1

6:33

我醒了,苏律硕还睡着。于是摁亮了一块屏幕。

6:40

苏律硕醒了,开始洗漱。
过了5分钟,接到了一个神秘的电话——morning call。

6:55

下楼吃早餐。居然是自助餐,真是高级!

7:50

出发去考场

8:20

进考场。

8:30

比赛开始。密码居然是“认真思考”的拼音加上一些数字!这莫非提示了什么?
结果我弄了3分钟,还是没有解压成功。最后才发现是漏了一个问号!!!

8:40~10:00

发现T1就是一道水题,T2十分有趣,T3看起来不可做。
于是先打了T1。嗯,T1无论怎么看上去都是一道水题。居然还要强行要求选手使用unsigned long long,而且直接1<<n会爆精度!
然后T2有些懵逼,不太会做。我的思路是每次把到根的字符串弄出来,然后左右匹配,一通乱搞……
打得十分混乱,于是去了趟厕所。

10:02~12:00

接着我就想出了T2。
可以发现一个点 x 到根上的合法括号子串只有两种情况:以 x 为右端点的和不以 x 为右端点的。
不以 x 为右端点的答案实际上就是父亲节点的答案。关键在于怎么处理以 x 为右端点的子串数量。
这个东西我开了一个栈和一个桶来处理,不过要支持还原操作。我以前是没有打过的,但是这次居然过了样例,应该是对的了。
由于题目说了栈空间限制等于内存限制,我就没有打人工栈了(虽然感觉 5 × 1 0 5 5\times10^5 5×105的数据是专门用来卡栈的)。
于是打T3,链和菊花图的的情况没有搞出来,就只打了10分暴力。
估分:100+100+10=210

12:01

出了考场,问别人考得怎么样,发现我的估分是大众分。
于是高高兴兴地吃饭。

13:50

回到酒店。
问那些没报入门组的同学们有什么安排,结果他们还没有什么计划,于是先回房间休息。

15:00

和YYT商量,最后决定去走走公园,于是去看看有没有人要一起去。

15:47

拉上一个初一的同学去大沆公园。
地图显示距离为900多米。


Day2

这天的密码是“抓紧时间”和一些数字、符号,这莫非又暗示了什么?
看了一遍题目,发现T1很不可做的样子;T2看起来不难,居然要用本地生成数据和高精度来增加难度;T3又是神仙图论。
于是全力搞T2。
这坨东西很像是DP,于是我就苦思冥想,猜了一些结论:

  1. 最优的情况是每一个块尽可能小,因此对于每一个点 i ,其作为块的右端点的最优的方案是,找到一个离它最近的满足条件的左端点,令这个左端点为 f i f_i fi
  2. 从小到大,对于每一个点 i 的 f i f_i fi是单调递增的;
  3. 对于每一个点, ∑ j = f i i a i \sum_{j=f_i}^ia_i j=fiiai是单调递增的。

然后就可以 O ( n ) O(n) O(n)DP了。
结果我发现这个东西过不了下发的样例。
接着我才发现猜想3是错误的。
这时由于紧张、慌乱,我的思路十分混乱,没想到用单调队列,只是弄了一个很像单调队列的东西出来。不加高精度,能过。
但是我想AC。
临近11:00,我的高精度仍然没有调出来,怕最后得分很低,就删掉了高精度,开始搞T1。
发现1~8的数据中n很小,就想用状压DP来弄。
然后就调不出来了。
估分:0+88+0=88

赛后

Day1T2我没有切,Day2我貌似一分也没有了。
原来CSP的大数据是不可靠的,关键还是要对拍。我先前单是以为过了大样例约等于AC。
然后我又发现我Day2T2空间超限了……
心态大崩……
赛季报销……
不知道有没有三等奖了。
我先前觉得看出一道题的做法就相当于切了这道题的一半,做完Day2T2后发现真是错得离谱!
《OI外史》里有句话说得好:

代码实现若做的好,随你做甚么比赛,——要CSP就CSP,要NOI就NOI,——都是一鞭一条痕,一掴一掌血;若是代码实现欠讲究,任你想出甚么来,都是野狐禅、邪魔外道!


总结

估分:120+0=120
这次比赛我的策略出了严重问题。我没有想到暴力分是如此可观,正解的细节是如此难调。本以为先做对会做的题、再打暴力才会得到最高得分;却发现暴力分大于我的得分。
这次比赛我略显自负,妄想切题却忽视暴力。应该先花30~40分钟把能拿的暴力分都拿了,再打正解。
此外,要更加认真地对待模拟赛,提高打程序的效率,不能光看出正解,还要能高效地打出程序。

猜你喜欢

转载自blog.csdn.net/huangzihaoal/article/details/103130325