CSP/NOIP 防爆指南

 

https://blog.csdn.net/qiaoxinwei/article/details/133737953

CSP/NOIP 防爆指南
一、文件操作

    使用 freopen 进行文件读写。使用格式:

    freopen("test.in","r",stdin);
    freopen("test.out","w",stdout);
    



    注意该语句存在于头文件 cstdio 中,一定写对文件名。

    注意加足加够头文件。(dev 比较欠,可能会自动加头文件。)

    允许使用 C++14 和以下划线开头的函数(意味着 __int128 , __builtin_popcount() ,__builtin_ctz() , 都合法了)。

    听从监考老师要求,根据老师的要求存放文件。(一般是在 D 盘根目录下,以 SD-00000XXX 为名字建立一个文件夹,文件夹下分四道题目的文件夹,这四个文件夹内各自存放一个源程序。)

    使用万能头时注意变量重名,如 y1 。

二、常见问题

    计算数据大小,是否爆 int ,注意 %d 与 int 对应, %lld 与 long long 对应,改 float 为 double ,%lf 与 double 对应。可以引用 limits.h 头文件,输出 INT_MAX 和 LONG_LONG_MAX 来查看 int 和 long long 的最大值。int 大约为 2e5 , long long 大约为 5e18 。
    注意定义数据的类型。(小心 double 定义成 int , int 定义成 char 等问题。)
    注意 MLE / RE ,一个 int 为 4B , 一个 long long 为 8B , bool 与 char 为 1B ,不要开小导致 RE 或 开大 导致 MLE。常见的 RE 错误还有除以 0 ,函数递归死循环。
    i++ 与 i-- 是先调用后加减,++i 和 --i 反之。注意 <= 与 < , >= 与 > 。
    位运算优先级问题。
    全局变量和局部变量冲突问题。
    涉及取模的问题,能多模不少模,需要卡常时可以采取减法。涉及乘法建议强制转 long long 或 乘 1ll 。
    二分和递归边界。
    各种模板背熟、尽量理解原理(为了魔改)。

三、比赛策略

    本条目针对 CSP/NOIP 常见题型。
    大模拟:权衡时间,取性价比高的部分分。
    数学、规律题:证明 or 猜测。(如小凯的疑惑。)
    DP、图论:重中之重,属于主要做的题目。
    永远记住暴力和骗分。
    在空余的时间对拍、自造大样例确保程序正确性。
    最后 30min 检查程序是否正确提交。

四、考试状态

    CSP-S2 是下午比赛,因此中午不能吃太饱、建议小睡一会。
    考试时允许带食品,建议巧克力。
    “厕所是 OIer 灵感的源泉。”洗手间可以让人冷静下来。
    一定合理安排时间,不能炸心态,不能死磕一题。

以上根据作者诸多爆炸经历总结得出。

\[By \text{ } ahawzlc \text{ } 2021.10.17 \]

任何一个伟大的计划,都有一个微不足道的开始

Update:2021.10.17
一、无模数时不开long long见祖宗!!!有模数时不能开long long,很大概率会超限。
二、当数据大时尽量别出现两个大数相乘的情况,否则用快速乘
三、注意运算的先后顺序
1.不确定优先级就死命加括号!!!
2.判断偶数时if(x%2==0)不能改成if(!x%2),因为这样它会先算!x,再算(!x)%2,所以会得到错误答案,这里可以改成if(!(x%2))。这东西搞得我一道题交了21遍才过。
四、数组下标不能出现负数或大于数组范围的数
五、数组不能开得过大,可能会MLE
六、模运算没有关于位运算的性质,所以计算时不能边异或边取模
七、计算时能模就模(除了上面这种情况),对于不用进行模运算的,尽量避免大数相乘
八、避免变量名相同而引发的错误
九、注意sort快排不稳定,要确保按输入顺序输出时应手打排序
十、max、min最好不要用define(因为可能会造成奇奇怪怪的错误),最好手打函数
十一、for循环的边界条件如果需要调用函数(如:strlen()),那么最好先算出来,否则复杂度会增加,有的题会卡掉。
十二、求pow(pow(x,a),b)时,最好不要化成pow(x,a*b),虽然这是等效的,但是会莫名其妙地错误(a*b未溢出)!
十三、不要用数组充当变量(如用dfn[0]来记dfs序),这样会造成玄学的错误!我因此交了这题89次才发现错误所在,同时因此多花了两三个小时!
十四、最重要的东西

freopen(“problem.in”,“r”,stdin),考场上打错就凉凉
code line

 

 
 
 
 
 
posted @ 2023-07-28 19:22  JMXZ  阅读(263)  评论(0)    收藏  举报