NOIP2017提高组比赛总结

NOIP2017提高组比赛总结

前言

转眼间,NOIP2017(经常叫他NOIP,其实全称是全国青少年信息学奥林匹克联赛)就这么过去了。回望这2个月,既有参加NOIP的激动,也有赛场上一些失利的遗憾。想一想,我应该给自己总结一下吧,希望其他人能从中获益,也让我明年再战的时候能有所借鉴。

正文

NOIP2017初赛

今年的初赛,由于是到了提高组,选择题有5题改成了不定项选择题,就是一题可能会有多个答案的,这就比较难,于是我就提早了很长时间去网上搜罗提高组初赛的真题(明年一样可以用呢),提早很多做(然而最后并没有刷完所有真题),考试前还慌慌张张的复习组合的知识。在考试的时候,看到第一道选择题就懵逼了,Pascal语言什么时候退役?我不知道啊。。。
开场以后,我极其认真的做每一题,但是发现速度不够快,做完选择题已花了很久,做问题求解的时候,一看是不是什么对偶图最短路,发现手模就可以做出来。等我开始做读程序写结果的时候,坐在我左边的杭二高三巨佬已经快做完了。
终于,我做完了所有的题目,时间已经不足10分钟,我又检查了一圈,查出了一些错误,在心慌中,初赛结束了。
一个星期以后,成绩出来了,我好像是95.5,省里排名rank20,遗憾的是错了3题选择题啊,明年要好好努力,但总算是过了初赛这到坎。

NOIP2017复赛day1

NOIP的day1,是我第一次考提高组,无比认真也又十分激动,前一天晚上还在复习各种知识,生怕考到的知识没掌握好

  • day1 T1 小凯的疑惑(math)
    https://www.luogu.org/problemnew/show/P3951
    开场第一题,发现好像是数学题?(考试后有人说用扩展欧几里得,我学的不好啊)场上推了一下,推出了答案是(a-1)b-a
    怎么**推(猜结论)**的呢?
    首先,数据保证有答案,
    然后,考虑a的倍数一定是能取到的,那么不能被a整除的数除a的余数(除了0)只有a-1种,由于有条件:a和b是互质的,所以设x=b%a(x!=0),那么大于等于b的模a余数为x的数都能取到了,b设y=2
    b%a(x!=y),所以大于等于2*b的模a余数为x的数都能取到了…以此类推,因为有a-1种余数,所以最后一个取到的余数是(a-1)*b%a,这个余数的上一个数是(a-1)*b-a,所以答案就是这个

  • day1 T2 时间复杂度(complexity)
    https://www.luogu.org/problemnew/show/P3952
    快速的打完T1,就可以开T2了,一看T2,感觉就是一道模拟题嘛,考验代码精细的时候到了。根据题意,很自然的想到维护一个栈来处理,用几个变量记录是否有语法错误、最大的答案,在退栈的时候清空数组,读入的时候写的有条理一点,就好了

  • day1 T3 逛公园(park)
    https://www.luogu.org/problemnew/show/P3953
    不到1个小时打完T1、T2,就摩拳擦掌的准备T3了,T3是什么啊?一看到题目,有点懵逼,暴力模拟显然是不能过的,因为方案数还要模,那肯定是很多的吧,那么考虑dp,f[i][j]表示到了第i个点,还可以绕远j的距离的方案数,因为n<=100000,k<=50,O(n*k)显然没问题,那么好了,正着、倒着一遍最短路是不能避免的。然而看到题,还有无数解的情况,怎么样会无数解呢?那就是你发现走到一个地方,发现有0环,那么就可以在0环上无线绕,方案就有无限种了,但是发现,出现0环并不一定是影响答案的,只有在路径长度<=最短路长度+k的路径上的0环上的点才会影响答案。一开始我想错了,打了半个小时。后来把dp、spfa都打好了,就差一个判无限方案情况。事后得知判0环其实也可以找出所有有用边、点,把0边拖出来拓扑判环就好了,但是我考场上没有想清楚,直接拓扑,所以从0环上指出来的0边指向的点会被我判在0环上,所以我的公式:起点到他的最短路+终点到他的最短路<=起点到终点的最短路+K不能完全得到应用。在民间数据中我的T3没有被卡,但是不知道官方数据会不会卡。

day1的考试我剩下了一个小时,最后在那里手构数据,检查代码、freopen,进行对拍,却没想到T3会有正确性问题,希望官方数据出来后day1能考的好一点

NOIP2017复赛day2

考完了day1休息了半天,和大家一起揣摩T2可能考什么题目,day1不是很难,day2可能就要出难题了,终于,day2开始了~

  • day2 T1 奶酪(cheese)
    https://www.luogu.org/problemnew/show/P3958
    day2T1,看到距离公式,吓的以为是计算几何,但是仔细一看其实是一个并查集的题目,最后看到下表面和上表面是否并查集的值相同就好了

  • day2 T2 宝藏(treasure)
    https://www.luogu.org/problemnew/show/P3959
    T2,n那么小,就觉得是状压dp,但是状态怎么表示呢?我想了一个方法,并且打完了,小样例过了,大样例却没过,仔细一想,正确性好像有问题,我f[i][j][k]表示现在的取到的点的状态是i,枚举到第j个点,j这个点的深度是k,但是转移感觉不会写,然后就挂了。最后我交上去了一个所有V相同的部分分,枚举每一个起点BFS贪心的取,不知能拿多少分。事后得知这一题爆搜加剪枝就能拿很多分,而BFS的状压可以过掉此题。

  • day2 T3 列队(phalanx)
    https://www.luogu.org/problemnew/show/P3960
    T3感觉是数据结构题,但实在不知道怎么做,分块?应该能拿到1e5时的分,暴力,优化一下内存能拿50分,加起来就有80分了,然而我打的时候内存优化(set维护哪些被用过)出了点问题,然后最后只有30分了。问一个dalao怎么数据结构,他说用treap维护,spilit一下就好,只是可能还是会T,线段树加二分就好。

纵观day2,不是很顺,T2T3都和正解擦肩而过,部分分也没打好,还是要提升代码能力,要是T3部分分打出来了,正解该是也很好打的吧。

总结

NOIP2017结束了,day2实在是考的不尽如人意,没有打好暴力,就落得如此下场,day2T2死磕太久,导致时间不够,day1T3正确性没得到保证,说明思路的严密性还不够,所以以后要培养判断一个算法正确性的能力吧。

后记

NOIP成绩已出,100+100+70+100+15+40=425,很是一般,不过无妨,明年加油!

你可能感兴趣的:(OI,总结,noip)