JSOI2018冬令营游记&总结(迁移自洛谷博客)
游记
一开始在冬令营还没开始的时候,十分期待,殊不知每天都有一场浩劫在等着我。
Day0
10:50出发,看见lbn同学发了一条说说,也随便发了一个。
然后在车上一直在睡觉,现在感觉挺后悔的,其实可以好好预习预习的,也不至于后面每天上午听得半懵半懂,下午实战天天挂。
yy和zcr他们在车上一直在玩游戏,吵得人心神不宁,不过他们也难得能那么浪了,毕竟每年也只就两次了。
晚上莫名其妙地就去代表开明去领取校团体奖。然后就是一场跟去年一模一样的讲座。
Day1
早上调闹钟5:30醒来,结果又在床上赖到了5:50才起来。然后赶紧去刷牙洗脸,全用冷水,让自己充分清醒。干完以后6:20,赶紧去食堂吃饭。
到了教室,遇到了夏令营的老朋友,就在旁边坐下了。写了一点作业。到了7:50,看见yy和zcr三个人才来,还不知道又睡到了几点。这些人,真不知道是怎么给初一初二当学长的,天天打游戏,睡到七点多钟...
然后由蒋炎岩老师来给我们讲课,ppt名字叫“好玩的字符串”。一开始是讲半节课的自动机,还是比较能听懂的。然后开始讲KMP,这个也没啥问题。然后期待他能开始讲AC自动机,结果AC自动机被三句话带过。。。下面就是一大堆题目,倒也还能听懂,因此第一天的课还是能听懂的。
下午就是我们的第一次实战。
看到T1,可以一眼看出这个是考组合数的。几个组合数的式子很明显,如果没有取模的话,完全可以做到O(K)的。然后这个除法取模,由于我见识浅薄,并不会。好吧,写一个O(nk)的骗点分吧。
T2题目不难,但是实现起来感觉挺烦的,于是直接放弃了。T3直接写了一个最暴力的暴力,其实稍微好一点的暴力也不难想,没想到还是很不应该的。
于是就这样很遗憾地30+0+30=60,低得可怕。下午听说BCD班那么多同学ak了,深感自己不行。晚上回来看了一下题解,T1的取模竟然是逆元相关,赶紧学了一下,又长见识了。晚上写出了T2。T3是“大根笛卡尔树”,还是决定回去以后再学吧。
Day2
上午基本上跟昨天一样的感受,能听懂。
下午的题目因为太粗心,T1的有个变量没有赋初值,T2因为自作聪明"为保险起见",把循环次数开大一倍,然后就这样超时了。于是30+60+0=90,其实T1T2完全有能力AC的。T3暴力都没写对,实在不应该。
Day3
上午也还行,听得也不错。
下午的实战更加悲壮了。T1用了一大堆数据结构笨拙地维护,只骗到了40分。T2想到了树形dp,但是不敢写,感觉有点不大对劲。T3的话还是很简单的,但我竟然没做出了太不应该了。
Day4
上午的网络流。讲课老师一开始认为我们“已经有了充分的网络流基础”,于是前面的基础部分10s一张幻灯片的速度跑过,后来发现我们很不行,就有重头开始讲。但由于老师备课是按照“有基础”的思路备的,所以讲的也不大听懂。还好我之间看过一些,但后面讲费用流的时候还是不大听懂,看来回去以后还是要好好看看。后半节课基本上是讲题目。一开始老师讲,下面同学一脸懵,老师可能也感觉到了,于是下面就出现了,一道题老师给我们看25分钟,讲5分钟的尴尬局面,后面的同学有不少开始自己干自己事情了。
下午的实战,第一题一开始对着小数据看规律,后来干脆用excel把n<=10的情况全画出来了,后来坐我左边的一个常州同学“自觉地”凑过来和我一起研究,最后一起发现了图形上的规律。其实完全可以对于4以后的几项,直接看数上的规律———它们的差的差相等。而这个规律在前4项上是不存在的,这也是这题坑的地方。然后T3的话一开始打算用二进制来存,但发现这样搞跟暴力几乎没有区别。然后突然想到可以建上15棵线段树,非常简单地就可以把这题做出来了。于是100+0+100=200,也还说的过去。
Day5
随后就是我们的积性函数和莫比乌斯反演,一开始听得还是能懂得,但后来听得就有点跟不上了,也不是不懂,就是思维总是比老师讲的慢几拍。
下午的实战更可怜了。第一题暴力结果尽然能过,原来是老师把数据弄错了。T2题目就没看懂,于是就没写。T3感觉应该是某种自动机,但由于自动机类的东西我还没写过,于是就写了暴力。
Day6
上午的概率和期望听得不错,但下午实战就彻底挂了。T1的dp其实是非常简单的,但是最后题目让我把答案对某个数取逆元,只能放弃。T2一开始感觉是递推,但后来发现这个递推式是无限的,又忘了可以通过一些运算转为有限,所以只能放弃。T3的根本方向搞反了。其实应该把一个点从下往上推,其实从上往下也能做但比较麻烦,就写出了一大堆bug。
Day7
上午就是计算几何基础了,结果一大堆的式子与方程把我绕得晕乎乎的,只能回去以后慢慢推了。
下午就回去了,在车上看了一会儿AC自动机,结果看睡着了。又被lbn在服务站喊醒,回来接着睡。毕竟这几天每天接近12点才睡,5:30就起来了,还是很困的唉。
总结
说实话上面的游记可以当废话看,总结才是最重要的。
这一次冬令营报了A层次,虽然在那里受尽神们的折磨,但我并不后悔。因为这一次冬令营告诉我,我存在着什么问题。如果单单只是以现在的状态和水平,去参加以后的考试的话,一定不会有好的结果的。同时,也让我见识到了外面学校的同学,是有多么强。
现在的水平与能力肯定还是不足以应对提高组的比赛的。算法与数据结构的积累只是一个方面,更重要的还是在已学过的算法里面的思维能力。能够想出正解才是真本事,学的东西再多不会用,那也只是纸上谈兵。
每天上午的听课,有的时候听不太懂,肯定是有原因的。有的时候可能会因为稍不留神错过了一点东西,而这恰恰是后面很重要的。或者是自己的思维与理解没有跟上老师的节奏,或是不能充分理解老师讲的每一个字。这些种种原因都有可能会给我的以后的学习带来一些困扰,所以都要努力克服。
下午实战的时候,经常不能拿到让自己满意的成绩。主要归结下来也还是这几点:
- 自己思考出了正确的解法,但是写出了问题。或者可以说,是自己写代码时候粗心所致,其实通过对拍等一系列手段完全是可以避免的。但是每天实战的时候,其他题目都还没有写就去对拍这一题,一直让我舍不得,所以没去对拍;或是实战的时候,看见那么多题不会写,受到了心理创伤,心里烦,不想对拍了。也有的是因为自己自以为是,擅自篡改数据范围,导致的超时等原因。
- 自己完全可以思考出正解,但没有思考出来。一方面是自己水平不够,不能对题目进行很深入的分析,透过题目的本身和出题人进行思想交流;另一方面,是自己平时经验不够,不能根据平时的经验给自己以一些提示。当然,上一点所说的心里烦乱的原因也是有的。但这里“水平不够”还是最主要的原因啊。
- 自己确实没有学过相关的算法。这样的问题,我还是需要通过广泛地学习来弥补自己的缺陷了。但是,这一个原因还是只占很少部分的,并不是主要原因。
- 想出的是错误的算法。这个归根到底还是属于第二条的原因了。还有的还是因为思维不够严谨,那么思路就很容易出漏洞。
经过上面的分析,其实关键词还是在“水平”和“严谨”两个词上面。水平问题,其实还是通过做题目,以及多加思考,训练思维,才能弥补自己能力水平与思维上的缺陷,这是我目前面临的一个主要的大问题。还有的就是严谨上面的问题了。严谨可以是思维严谨,也可以是代码严谨,没有写出不该写出的bug,白白失去那么多的分。严谨的这个问题可以说从初一开始就在困扰我,一直到现在都还没有解决。看来这是一个任重道远的过程了。我们的严谨主要就是能够不出不该出的错误,在出错以后,能够立即发现并改过来,使自己最后的程序是没有错误的。
因此,下一阶段的任务,主要还是着力于这两个方面上。我相信,只有通过我每天都认认真真的学算法,做题目,才能解决目前的这两个主要问题。我愿意为这付出我所有的时间和绝对的努力。