t1 是模拟题,涉及大量字符输入输出,比较考验基础语法吧,当然也没打多久,拍了之后发现scanf不能读入空格就会停止,所以只能getchar,这个比较重要。
t2 比较机智的贪心,花了一些时间没想出来就去打t3了。
t3 就是纯码农了,完全不考算法,然而我还是在bfs的时候有两个变量写错了,这个需要更加专注。
t1 想了很久,开始没有很好的思路,后面打完其他题想到了正解,但是只剩10min,只能上70分,最后还打挂了···还是要多接触数学题,发散思维。
t2 操作树,我之前没接触过,想出来了还以为是暴力···
t3 是错题,反正我也只打了暴力分。
身子垮了,回家看病。
只打了t3暴力。
t1,t2想出来,没有打。
t1 很多细节,一开始没有想太清楚,浪费很多时间,还看错题。
t2 直接上暴力了,没时间了。
t3 直接上暴力,但是到一半的时候身体不舒服···睡了一会,本来也有暴力分。
精神状态很差,切t1后就睡觉了。
t2没有思路直接跳过了,这样不太好,事实证明还是要按难度顺序做。
t3想得太复杂,主要是没有很好体会最短路算法,加了虚拟点,就优化了连边,这个没有想到。
t23都只打了暴力
t1打挂了,程序分了两部分,第二部分没检查。
t2水题
t3不会分治,打了暴力,也算是一种学习吧。
去医院看病,t1也没时间打完。
t2t3稍微想了一下,t3有些思路,t2完全不会,只知道要状压。
改了t3后比较好的让我更深一步理解莫比乌斯反演了。
t1想了比较久,思路混乱,离正解只有一步之遥,但是不够清晰,只能打暴力。
t2大概知道怎么做,但是没时间了。
t3贪心,没时间了。
t1 随便写
t2 想了很久,放过了一些重要的思路,只有打暴力了。
t3 三分打错了,水数据分都没拿到。
t1 排序失败···
t2 dp加预处理
t3 看题出了偏差
300变210,要认真点···
这几天身体一直在恢复,中途都要睡觉,就常常打不完,但是想的比较顺。
暴露出很多问题。
t1,t2都很容易,不过第二题犯了很多细小错误,主要是我临时添加一些语句的时候,忘记对之前的代码造成的影响,导致浪费了比较多时间,一定要认真看程序,重新思考一下思路。不是说打完就算了,只看调试信息。
t3就傻傻的,想不到优化连边的方法,一直磕,最后20多分钟才开始打暴力,中途又一直想怎么优化,又紧张,然后就打错了。所以说t3还是要先打暴力,这样对拍的时候也省事,打不出正解也有分,倒是记得检查一下暴力有没有错。
今天用了NOTEPAD++和GDB调试,感觉不太适应。
第一题比较简单,很快搞定。
t2想不出比较简单的做法。纠结了很久,又想不出更好的办法,就直接放了树链剖分上去。这个算法好久没打是其一,另外用GDB频繁断开程序,切换窗口让我很烦,没有把精力放在代码上,这一点值得注意。结果,到比赛最后才打完,没时间对拍了。结果当然是没分了,其实就打错了两个变量名,但是我检查的时候还是没看出来。
熟练一下各种代码也是好的嘛。
t1比较容易,但是我精度出了问题。原因是别人是加起来再除,我是除了再加。这个需要注意,尤其是题目要求精确到3位以上。
t2很明显的旋转套路,但是之后怎么维护呢?我想打树套树,但总感觉不对···后面打了个差分数组,以为没问题,实际上x,y的范围没有那么小,然后数组就爆了,因为差分数组是树套树打了一些才去打的,出错了,时间紧促,数据过度随机,没弄出错。而正解是扫描线,这是经典套路,需要深刻体会。
然而这道题失败的地方还有旋转。我一想旋转45度,那不就直接上向量旋转公式吗?来先写个通式,写个···哇不记得了!然后我开始死磕三角函数到底写在哪里,弄了40min+,最后是用特殊值法弄个4元方程花了1min解出来的。可见,做联赛题最重要的不是掌握许多高深知识点,而是如何灵活运用简单的东西,毕竟只有3.5h。而且,过度不熟的东西平时模拟赛也不要打,不要想,这样没什么用。
t3自然又没有打··
这几天都是各种上复杂算法,还不如打两题暴力,分还高一些,比赛的时候,最重要的不是有没有切掉很多题,而是分数,有限的时间,必须强迫自己选择最多分数的策略,没亮点,至少没污点。
今天就是最后一天了,很关键。用回了旧版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,再看一下数据结构吧,打太慢不行。
过几天就要正式比赛了,要保持良好的心态,别人切掉多少题关我什么事呢,会做的都做一下,不会做的暴力,拿尽量多得分,享受比赛的过程,那种紧张地打完代码很爽的感觉。做自己。
策略方面,不要思考太久,到一定的时间,就要停下来,不然想出来了也没时间打。被一些题卡住了,可以先想别的题,或者停一会儿。调试的时候不要一上来就设断点,先理一理思路,看看程序哪个地方最容易出错。
稳中求胜,放手一搏是建立在暴力的基础上的,有舍有得,放下想出正解的虚荣,不会,就随他去吧,就像身体一样,不能一直精神奕奕,至少保证关键的时候精力充沛。何必处处跟人比较,让自己连幸福的姿态都没有了呢。