2020 NOI ONLINE(第一试)&&JOISC 赛后总结
NOI Online && JOISC 赛后总结
BY P.Y.Y
NOI Online
NOI Online 的成绩出来了,105分,刚刚踩线(前25%的线是100),老实说,这个分数并不高,但比我想象中的要好(我的预估得分50+20+10=80),55+40+10=105。
T1,本来就是一个没想明白的骗分算法,但好在这个可以保证只有一个条件的状况,于是保底50分,再加上骗到的5分,就得到了55分。
T2,听其他同学说暴力20分,我也打的暴力,但是我一开始求初值的时候没有直接\(O(n^2)\)算,而是\(O(nlogn)\)地解决,然后现在想一想发现,其实我后面的暴力也可以用树状数组啊,但是为什么打了个\(O(n^2)\)的暴力上去??(不太能明白自己考场上是怎么想的)。可能是当时在考场上比较迷糊吧...但可能运气好,刚刚卡过了20分 的点o(* ̄︶ ̄*)o。
T3,终归是因为只是搜索,只拿到了10分的暴力。
我觉得这三题都有点难度,但是洛谷上的评分三题全都是蓝题?本组其他同学考得也不差,我觉得还是练习量的问题。并且总体来说,这一场考试考得并不理想,能够挤进前25%也只是因为运气,并且也处在靠后的位置。最近学业也比较繁忙,要更加注重高效利用时间才行。
JOISC
总体来说,我这次JOISC炸得简直体!无!完!肤! 4天加起来还不到20分QAQ(13+1+0+5=19),但据不完全统计,本组平均分达到了56.1分,可想而知我拖了多少后腿与其他同学的差距有多么大!
Day 1
今日得分 11+1+1=13。
T1,\(n<=5e5\),但这道题基本用到的是\(2*n\),所以猜测正解应该是\(O(n)\)的做法。一开始想的是贪心,虽然能过掉大约70%的点,但是这个是subtask啊,错一个一分没有(突然领悟到为什么要有subtask捆绑测试这种形式,可以无情卡掉骗分代码...)。所以之前在这道题的贪心上纠结了很久,也没想到正确的解法。后来第二次看的时候,发现没有AC的选手很多都拿到了11分,第一个subtask的范围是\(n<=2000\),所以猜测是\(O(n^2)\)的算法。我用\(f(i,j,0/1)\)表示当前是第i个,用了多少个A数组里的数字,当前选的是A/B数组中的数,然后记录一下转移,就可以\(O(n^2)\)求解了。前面f数组的i可以用滚动数组来实现\(O(n)\)的复杂度,但考虑到这种做法后面记录转移的d数组复杂度降不下来,而且也存的下,就没有必要特地去用滚动数组减小空间了。成功拿到11分后,又开始想如何\(O(n)\)解决,但想了很久没有头绪,就先看别的题了。考试后看到正解是:利用\(f(i,0/1,0/1)\)表示当前选到第i个,尽量选A/B数组中的数,当前选的是A/B数组中的数,能用到的A/B数组中的数的最多个数。然后只要\(min(f(2*n,0/1,0))<n||min(f(n*2,0/1,1))<n\)就可以判断无解了,然后输出方案的时候反向考虑,每一步考虑选择后两个数组能选到的答案都能\(>=n\)即可。
T2,这题我按我自己理解的“暴力”去做,发现一分没得,猜测估计要打二维线段树才能拿到暴力分,但是我只是知道有这个数据结构,之前没有亲手打过,也没有把握能打好,就先没有打。后来发现k=1的情况比较好得分,就尝试打了k=1的暴力,但是别人都拿了2分我只拿了1分。考完看题解才知道,此处k=1的时候一定存在满足性质的点所有矩形中的最左的右边的边上,以此类推,就可以求出满足性质的点了。
T3,看分数就知道,我只打了一个暴力,得了1分。其实我在考试最后30min想到了对于满足特殊性质的数据\(x_i<=x_{i+1},y_i>=y_{i+1}\),每次操作一定是一段序号连续的点,于是我们就可以用线段树来解决。但是最后由于时间紧迫和手不熟等种种原因,还是交了一个暴力上去,只得了1分。
Day 2
今日得分 0+1+0=1。
T1,一道交互题,但当时我还不怎么会交互,于是明白是道交互题就赶紧跳过了。(这个习惯非常不好,我到考试结束其实都没有看完这道题的题目。)
T2,本场唯一得到分的题。我先按自己的想法打了一个比“自以为”比暴力强一点点的暴力,但是虽然通过了所有样例,还是WA掉了。尝试几遍,都还是WA了,我开始怀疑做法的正确性以及自己有没有申清楚题。仔细读完题后,我打了一个真正意义上的“暴力”,交了上去,发现第一个subtask过了,于是明白做法正确性没有问题,就是时间复杂度不正确,于是通过对拍,找出了自己原来程序的错误,但是很不巧的是,这个时间复杂度还是不对也没有比不优化的程序好到哪里去。
T3,通过打表发现,其实答案有一定的规律性,例如如果第一个数字是2的话,就可以直接用n-1的答案将后面几个全部-2来直接得到。于是我猜测这题应该是dp,但是想了很久也没有想出dp的做法。最后只能一个暴力搜索上去,但是这个题最小的数据都是n<=13→因为用的是枚举的是\(2*n\)个,所以显然无法得分。
Day 3
今日没有得分,我爆零了。
T1,我想了半天,只想出可以\(O(n^2)\)地求出所有互相制约的星星,然后每对制约关系中,去掉其中一个星星即可。这令我想到了之前的网络流模型,但是之前的网络流模型是可以根据格子的特性建立二分图的,而这题可能会出现多个成环的状况,所以不能用网络流去做,也没有想到什么好的做法。
T2,这题考场上并没有想出什么好做法,因为我不大会处理多个物体同时运动的问题。考后听巨佬讲解,可以转换成基环树来做,然后根据二维数点等做法来求解(这些我其实都不大知道怎么做,只知道大概的思路)。
T3,这题又是一道交互题。JOISC两次考到交互题,我就知道交互题肯定是不能马虎过去的了。于是我尝试着做一做。但是写完了以后面临的问题就是,不会编译,无法使用下方文件检验自己的答案,但是我把程序交上去,也能够正常评测(只不过WA了很多),于是就自己做,尝试着测了一下,只不过到考试结束都没得到分。后来下午突然找到了自己的bug,于是改了一下,用另一个号交上去,发现得了4分...后来也经巨佬指点,大概初步学会了交互题的做法,也算是一大收获吧!
Day 4
今日得分 1+0+4=5。
(可我刚刚学会的交互题今天没有考...)
T1,自己手玩了半天,找到规律又被自己推翻了,最后只能交个暴力上去,仅得1分。后来听巨佬们讨论貌似要用到虚树(可我不会啊)。
T2,一道提答题。但是我当时觉得有点麻烦,就没有先做。(这是我本场最后悔的事了)。
T3,看到这道题我就大概能明白应该跟线段树有点关系,但是觉得很多天的一起讨论比较复杂,我就先打这题只有1天的情况了(也就是选择代价最小的能覆盖全部点的方案),用一个dp解决,并且要用到线段树优化。打完后,感觉自己对T1没得多少分还是有点不甘,就去肝T1了。
前面提到了没写T2是本场最大的遗憾,考后据说这题暴力都能拿25分(我4天加起来都没有25分),内心有点小遗憾。但是听说毕竟是听说,毕竟我后来没有亲自去打,不知道情况如何。但我觉得,这也警醒我,在考场上对考题的判断非常重要。
总结
本次JOISC也让我开了眼界,国赛毕竟是国赛,像我平常能用到的那些骗分小技巧全都不管用了,这也反映出了我对数据结构运用的不熟练,以及思维上的缺漏。收获当然有,例如初步学会了交互题,虽然后一天没有考到,但是也让我明白了,平时不用功,得过且过的学习态度的后果。当然,也希望能在后面的学习中打好基础,学好知识,多加练习,获得进步!!!
upd:又一次翻看了自己的blog,发现之前的文章没有用\(\LaTeX\)好丑啊...于是改了一下。

浙公网安备 33010602011771号