NOIP停课以来比赛总结

每日明细

10.31

t1 是模拟题,涉及大量字符输入输出,比较考验基础语法吧,当然也没打多久,拍了之后发现scanf不能读入空格就会停止,所以只能getchar,这个比较重要。
t2 比较机智的贪心,花了一些时间没想出来就去打t3了。
t3 就是纯码农了,完全不考算法,然而我还是在bfs的时候有两个变量写错了,这个需要更加专注。

11.1

t1 想了很久,开始没有很好的思路,后面打完其他题想到了正解,但是只剩10min,只能上70分,最后还打挂了···还是要多接触数学题,发散思维。
t2 操作树,我之前没接触过,想出来了还以为是暴力···
t3 是错题,反正我也只打了暴力分。

11.2

身子垮了,回家看病。
只打了t3暴力。
t1,t2想出来,没有打。

11.3

t1 很多细节,一开始没有想太清楚,浪费很多时间,还看错题。
t2 直接上暴力了,没时间了。
t3 直接上暴力,但是到一半的时候身体不舒服···睡了一会,本来也有暴力分。

11.4

精神状态很差,切t1后就睡觉了。
t2没有思路直接跳过了,这样不太好,事实证明还是要按难度顺序做。
t3想得太复杂,主要是没有很好体会最短路算法,加了虚拟点,就优化了连边,这个没有想到。
t23都只打了暴力

11.5

t1打挂了,程序分了两部分,第二部分没检查。
t2水题
t3不会分治,打了暴力,也算是一种学习吧。

11.7

去医院看病,t1也没时间打完。
t2t3稍微想了一下,t3有些思路,t2完全不会,只知道要状压。
改了t3后比较好的让我更深一步理解莫比乌斯反演了。

11.8

t1想了比较久,思路混乱,离正解只有一步之遥,但是不够清晰,只能打暴力。
t2大概知道怎么做,但是没时间了。
t3贪心,没时间了。

11.10

t1 随便写
t2 想了很久,放过了一些重要的思路,只有打暴力了。
t3 三分打错了,水数据分都没拿到。

11.11

t1 排序失败···
t2 dp加预处理
t3 看题出了偏差
300变210,要认真点···
这几天身体一直在恢复,中途都要睡觉,就常常打不完,但是想的比较顺。

最后一周模拟

11.14

暴露出很多问题。
t1,t2都很容易,不过第二题犯了很多细小错误,主要是我临时添加一些语句的时候,忘记对之前的代码造成的影响,导致浪费了比较多时间,一定要认真看程序,重新思考一下思路。不是说打完就算了,只看调试信息。
t3就傻傻的,想不到优化连边的方法,一直磕,最后20多分钟才开始打暴力,中途又一直想怎么优化,又紧张,然后就打错了。所以说t3还是要先打暴力,这样对拍的时候也省事,打不出正解也有分,倒是记得检查一下暴力有没有错。

11.15

今天用了NOTEPAD++和GDB调试,感觉不太适应。
第一题比较简单,很快搞定。
t2想不出比较简单的做法。纠结了很久,又想不出更好的办法,就直接放了树链剖分上去。这个算法好久没打是其一,另外用GDB频繁断开程序,切换窗口让我很烦,没有把精力放在代码上,这一点值得注意。结果,到比赛最后才打完,没时间对拍了。结果当然是没分了,其实就打错了两个变量名,但是我检查的时候还是没看出来。
熟练一下各种代码也是好的嘛。

11.16

t1比较容易,但是我精度出了问题。原因是别人是加起来再除,我是除了再加。这个需要注意,尤其是题目要求精确到3位以上。
t2很明显的旋转套路,但是之后怎么维护呢?我想打树套树,但总感觉不对···后面打了个差分数组,以为没问题,实际上x,y的范围没有那么小,然后数组就爆了,因为差分数组是树套树打了一些才去打的,出错了,时间紧促,数据过度随机,没弄出错。而正解是扫描线,这是经典套路,需要深刻体会。
然而这道题失败的地方还有旋转。我一想旋转45度,那不就直接上向量旋转公式吗?来先写个通式,写个···哇不记得了!然后我开始死磕三角函数到底写在哪里,弄了40min+,最后是用特殊值法弄个4元方程花了1min解出来的。可见,做联赛题最重要的不是掌握许多高深知识点,而是如何灵活运用简单的东西,毕竟只有3.5h。而且,过度不熟的东西平时模拟赛也不要打,不要想,这样没什么用。
t3自然又没有打··
这几天都是各种上复杂算法,还不如打两题暴力,分还高一些,比赛的时候,最重要的不是有没有切掉很多题,而是分数,有限的时间,必须强迫自己选择最多分数的策略,没亮点,至少没污点。

11.17

今天就是最后一天了,很关键。用回了旧版DEV C++和他的IDE,感觉也不太差嘛。比GDB习惯多了。
看完题之后,感觉t1还是有点懵。没有头绪,怎么办呢?我先弄了个状压DP出来,记录每个质数奇偶性,这个虽然没什么用,可至少知道了只有奇偶性有用,数量是没有用的。想到这一点之后,我又想,怎么匹配会让他最大呢?无论如何,最终状态肯定都是00000···,怎么匹配呢?我先把完全平方数都乘上去吧。哎,要是把所有数都乘上去会发生什么?哦,那最后肯定有些位是1,那怎么办?剔除他们啊,呀,他们都是质数,我直接把乘上去的那些状态为1的质数都除掉就好了。
结果我还真傻呆呆地乘了之后又求逆元除回去了…除回去了…要不是数据范围水,我还真不一定能过,比赛结束前我还一直以为自己O(n)。所以,有时候还是要多想一点。
t2写出式子之后,发现是求个前缀和然后直接O(1)转移。但是我发现直接暴力转也不慢,然后测了一下构造数据,最慢的也就2S,是优化常数就可以过的,反正OJ快,数据也不会太恶心,怎么说也有八九十分,那我肯定去打t3嘛。
t3一看就懵,完全不会处理,把暴力先打了。打完之后,开始针对部分分想了。这时困乏程度加深了,因为想不出来,那我先睡一觉吧,不一定是坏事,一边想部分分,一边睡。20min后,一醒就知道跟直径有关系。我先对Q=1的情况想,想出了解决办法,那最坏情况是把整棵树都要加一遍。哎,这样顺便把Ci互不相同的部分分也拿了。再想ki=2的,那我肯定是预处理两种颜色的点集的最远点对再做。那推广到ki>2也可以这样。这样就顺利想出正解了,看表,20min-。没办法。检查一下前面的题,就开始尝试打正解。最后打完也出了小错误。
今天策略还算可以,t2的腾出时间(其实我还是浪费了比较多的构造数据时间),t3由特殊到一般,揣测到出题人的意思,暴力也先打好了。
感觉考试的时候,如果真的太累,一定要咪10分钟左右,太长了容易打不完。如果不睡的话,脑子就会一片糨糊, 想东西的时候很难发散思维,容易分散注意力,但不要在最后才睡,找准关键的时刻,可以让后面的效率加很多。所以,10分钟可能换来很多东西,特别是我这种老年人选手。当然精神奕奕的时候就不要睡···这是态度不端了。
这是针对我这种老年人选手的策略,等我身体好了我也不用了。:-D

一些注意事项

1,如果读入的时候涉及getchar,一定要尽量排除换行的问题(【GDOI2017模拟10.31】战旗游戏 );

2,如果感觉自己不是正解,也要尽量把数组开到可接受的最大范围。大部分时候是时间复杂度分析得有点蒙,可能可以过。(【GDOI2017模拟11.1】I Like Matrix! )

3,题目必须多读几遍,然后手推一下样例,这样很大程度可以避免看错题,如 【GDOI2017模拟11.3】永恒的契约 ,因为看错题,导致发掘性质的时候找出大多是错误性质,然后难以解决问题,浪费了大量时间,短短1K+,打了2h多。
另外输入输出要求也要仔细看,如【NOIP2016提高A组集训第13场11.11】最大匹配 ,100变40。

4,简单题不能轻视,最后20分钟要好好检查,能拍尽量拍,用多种方法检查,像【GDOI2017模拟11.5】Divisors 白白丢了70分垫底是不行的。

5,递归的时候尽量不要传参,平时多用非递归的方法,特别是优化矩阵乘法的快速幂,【NOIP2016提高A组集训第9场11.7】涂色游戏 ,这道题的矩阵特别大,很容易出事。
顺便提一句,转移矩阵a[i][j]意义是f[i]转移到f’[j]。

6,很多题如果没什么思路,那就有可能是暴力加小优化,所以暴力也是一个很好的切入点,大胆一点,反正又不是想到什么就要打什么。(【GDOI2017模拟11.8】Walk)

7,看完题找不到切入点不慌,这跟想正解在最后一步卡住性质一样。多个思维角度思考,不要乱了阵脚,切题拿分多有意思,慌张没有用,还破坏心情。不要想着“别人都切了”云云,自己实力就是那样,做到最好就行。

8,看到10^9就要看要不要long long,打完程序检查每一个*每一个%每一个+。

9,如果想最后一题做法太复杂,自己没有太大把握,就千万不要打,赶紧打暴力,拿完所有部分分。【NOIP2016提高A组集训第15场11.14】过河 由于8和9,直接GG,只剩5分。

10,比赛策略,最后四天写得比较全了。
11,再看一下数据结构吧,打太慢不行。

关于策略和心态

过几天就要正式比赛了,要保持良好的心态,别人切掉多少题关我什么事呢,会做的都做一下,不会做的暴力,拿尽量多得分,享受比赛的过程,那种紧张地打完代码很爽的感觉。做自己。
策略方面,不要思考太久,到一定的时间,就要停下来,不然想出来了也没时间打。被一些题卡住了,可以先想别的题,或者停一会儿。调试的时候不要一上来就设断点,先理一理思路,看看程序哪个地方最容易出错。
稳中求胜,放手一搏是建立在暴力的基础上的,有舍有得,放下想出正解的虚荣,不会,就随他去吧,就像身体一样,不能一直精神奕奕,至少保证关键的时候精力充沛。何必处处跟人比较,让自己连幸福的姿态都没有了呢。

你可能感兴趣的:(思考与总结)