总结(实时更新中)

一、做题习惯

    1)首先先对照样例看自己的理解是否有误;

    2)敲代码前先验证思路的正确性与可行性,最好可以把思路简单地记录下来,以方便实现代码时条理清晰;

    3)各种换方式、换思路、或是优化前记得备份修改前的代码;

    4)提交前对于递归等不易计算时间复杂度的情况,实验一组较大数据看能不能跑过;

    5)最后记得检查调试内容是否全部注释掉了!

二、各种细节

   (一)关于输入输出

        1)输入输出一定要注意和题中要求的是否一样(注意区分0和O、大小写、标点等,最好使用复制粘贴);

        2)输入输出较多记得进行读入优化;

        3)数据大时屏幕输不下,用文件输入输出;

        4) system("PAUSE"); 用于暂停屏幕,有时很有用(调试);

        5)char int long long string 混着来的时候还是scanf保险、虽然慢了点,总比未知错误强(相比快读或是关同步cin);

   (二) 关于初始化

         1)注意检查每个数组(的每个维度)大小是否都开够了(特别是一些经过处理变大的数组@线段树开4倍);

        2)变量同上,可能会用到long long就一定要用;

        3)数据有多组(且要求分别独立处理)是一定把每个变量都初始化、且一定要在正确的位置上初始化;

        4)数组赋(极大或极小)初值,要么 for(int i=1;i<=n;i++)a[i]=(1<<30); ,要么 memset(a,10,sizeof(a); ,而不是 memset(a,(1<<30),sizeof(a)); ;

       5)各变量注意不要重名,尤其是不同类型的变量; 

   (三)其他

        1)循环嵌套时不要混淆循环变量的名称(如 i 和 j 、m 和 n);

         2)关于DP:

            *是否能覆盖全部状态?

            *求解后面状态时是否保证前面状态已经确定?

            *是否修改了已经确定的状态?

#  不要因为是练习就草率应对、碰运气式的去提交。

#   第一次wa就意味着你这道题的锻炼机会失去了。

#   即使你敲得再长,即使你再用心,你不查错,你考虑不全面,那么还不如不实现。

#   珍惜每一道题的处女性,使每道苦战的题都有其价值。

猜你喜欢

转载自www.cnblogs.com/Narupi/p/9703584.html