论一个蒟蒻的脑子里可以有多少坑(貌似咕了……目前更新保持在noip阶段)

就是错题整理了,其实也会把一些不该犯的失误整进来。

其实之前一直拖着不想写,直到某次模拟赛,看错了2道题,顺便爆了一道题的int(没错第一个点就会爆)之后爆零了,吓得我赶紧把这篇博客搞出来了......

只是个人向的总结,写的细了一点ovo。

模拟赛相关

比赛经验还不够,考前提醒一下自己

  • 审题错误

好难受啊,这个东西。一般来说是不用担心这个的,但这次模拟赛的题面,我真的不想承认是自己脑回路清奇的原因。

模拟赛我已经尽力了...我觉得题意不清,然后审了好久的题,然后审错了。

当然,这是个意外,毕竟大多数比赛的题面都是很符合一般的语文水平的。也不排除会有题意不太理解的地方,不要太紧张,多审几遍题,如果真的是题目本身的问题可以尝试寻求帮助(noip应该不会出现这种问题吧)。

  • 一下子没思路怎么办?

考了很多模拟赛了,基本上来说,遇到这种情况不用太担心,不要慌。遇见过几次这种情况,紧张的时候一般题目更没有什么进展。一般来说,noip难度的话简单题思路是肯定没问题的, 静下心来,把一些思路和题目的小细节写在草稿纸上,解题一般就没什么问题了。

  • 最后剩一些时间该干什么?

千万不要觉得自己没事干了!或者觉得自己反正只剩半个小时什么都写不出来之类的,还有很多事要干。这不是说一定要尝试着再想出并写出一道题的正解,你需要上个厕所(或者干点别的什么放松一下)然后清醒地查一下程序有没有zz错误,然后记得把freopen和文件都搞好。不能因为zz错误丢了有把握的正解and暴力分。

  • 还有......

拿到题后想到算法一定要大致证一下正确性!(贪心什么的玄学除外,可以大力猜结论,多出数据试一试)记得多考虑一下边界,特例之类的。不要觉得样例(尤其是小样例)过了就ok了,如果样例很水是可以用无数种错误方法过掉的qwq

 

数组大小,类型相关

数组开的大小应该不用多说,就是开的比题目数据大一点就ok,记得一些建边,队列(手写的那种),栈,dp数组和一些奇奇怪怪的东西要单独算。别开太大了,记得算算内存,然后也没什么了。

然后,这个类型啊,记得算好数据范围,尤其注意一下要不要开long long,要不要打高精,精度够不够。

然后,好像之前做过一道题,开int会爆空间,数据又挺小的,就直接开short了。类似的小技巧可以注意一下。

 

诶?为什么会炸?——那一些细节可要注意啊

 

字符串的读入需要特别注意一下(可能只有我一个人菜到这个可能写出偏差),看看它有没有读空格或换行。像是scanf读入不加‘&’号,想好要读入字符串时,是读s还是s+1。之后处理时要与读入一致(还有用strlen也要一致)。

变量名要遵循一定规则起,注意函数内变量名和全局变量是否同名,不要在循环内随便更改循环变量的值(不过这些编译比较容易查出来)。

还有运算优先级!加几个括号也不会让你的程序瞬间TLE,只会让你的运算正确而有条理,括号是个好东西,位运算什么的尤其要多加。

一些东西平时就应该养成良好的习惯,比如多组数据的memset清空啊,为数组的初始赋值什么的(说起来我还忘过给并查集的fa[]赋值...)。还有,memset()不能赋1,赋值时注意一下数据范围,比如赋极大or极小值时会不会不够大or不够小之类的,也不能超变量类型所能表示的上下界。

如果调试时炸了,要看一下你有没有写什么奇怪的无限循环啊,无限递归啊,或者什么除了个0这种让程序崩溃的东西......怎么说呢,我真的什么奇怪的错误都写的出来QAQ。

运算时还要注意运算变量的类型,个人感觉int/int是变不成double的,记得学会强制转换啊,加个‘.0’这种常规操作。

还有,注意头文件!不要老用万能头文件,调用某个库里的东西就要在头文件上加上它!不过一般也就5,6个常用的。

然后,应该不用说了,scanf()里输出%.(数字)lf时它会自己四舍五入,不用手动加0.5这种东西。

最后,如果我的程序不输出了,还有可能是我根本没写要输出答案。

 

其它的补充?

 

posted @ 2018-09-28 15:23  X_stream  阅读(149)  评论(0编辑  收藏  举报