C++基础:CSP & NOIP 烤前注意

应我们慈祥亲爱面容和蔼的老大哥要求,给各位dark♂佬做一下烤前指导qwq。

那么,烤CSP前有啥注意事项呢?(我就不说啥算法,程序的事项)

FIRST AND THE MOST IMPORTANT:

1.freopen(NOTICE THE CSTDIO),保灵,教辅工具与人生路劈叉捆绑安装,且一旦安装无法卸载。

2.注意你的文件格式,大文件夹(命名为你的准考证号)里面夹着四个小文件夹(每一个文件夹分别命名为每一道题的题目),一定要看清题目,有无大小写(一般无大写,都为小写,无空格),一定要对好了有没有写错,每个文件夹内为一个cpp文件,即为your code(也命名为题目)。

IF YOU MAKE IT WRONG THEN YOU WILL GET THE SAME RESULT AS THE TIP 1.

3.注意压缩包

then second:

1.比赛之前请先调整你的屏幕分辨率到你喜欢的大小
2.比赛之前请把编译器的字体调为你平时惯用的字体,尤其是注意这种字体中的逗号,点,1,l这种易混淆的字是不是区分明显
3.在不影响视野的情况下,请将字号尽可能调大,方便查错
4.请将题目通读完以后,再开始深入思考你认为最容易的一道题(such as the NOIP2018 PJT3,if)

5.即使这道题再容易,也不要着急写代码,请先明确自己每一步要干什么后,再开始写,轻敌会是你最大的错误

6.即使这道题看起来再没法做,也不要提早放弃,这个时候纸和笔会是你最好的朋友,自己尝试几个例子,也许你就会找到答案

7.请一定先明确自己要干什么之后再写程序,不要走一步想一步

8.如果这是一道动态规划题,请先把转移方程写在纸上再编程
9.涉及到边界处理、加一减一之类的问题,请在纸上举个例子,标上下标以后,在编程时参照纸上的下标写
10.如果思考30分钟仍一头雾水,没有可以实现的算法,请你果断屏蔽掉100%的那一栏数据,开始写60%,50%乃至30%的算法——在NOIP里面,30分绝不是小数目
11.几个常用的复杂度参考:100以下——可能是搜索;100~500——N^3,1000~5000——N^2,100000~500000——NlogN,500000以上——N或1
12.如果你发现你旁边的人写得很快,请你放心,他的算法十有八九是错的
13.虽然1s+128MB内存 (这是以前的了,现在应该是 1s + 256MB)  是标准配置,不过也不是每道题都是这样的,还是请认真阅读试卷首页的试题说明
14.计算内存的方法:数组大小*类型长度/1000 / 1000=所占内存MB数,int类型长度是4, long long=8 
15.记不住的话,记住int   型数组在128MB内存下最大开到2500 0000是比较保险的(占100MB内存)
16.写完程序之后,请一定不要忙着编译,请一定要将你的代码从头到尾通读一遍,也就是静态查错,这是整个编程过程中最重要的步骤,有的变量重复调用问题调试的话,一个小时也看不出来,静态查错可以一下指出错误
17.Debug请注意以下方面:
(1)是否写using namespace std(某些人注意一下习惯)? 
(2)数组开得是否够大?
(3)变量类型是否正确?
(4)memset时,所填的sizeof(XX)的XX是不是匹配?大小是不是正确?
(5)外层循环与内层循环的i,j是不是混用了?
(6)循环之前,i,j是否定义了?
(7)输入数据都输入了吗?
(8)这个程序是在执行你想让它执行的步骤吗?可以打system(“pause”),cout<<过程量,或者return 0,一步一步卡你的程序,观察

18.要用你最会用,最保险的东西,你用struct很熟,就不要去用class,你用

19.可以定义一些常量,便于修改

20.通过样例后,请你一定不要放松警惕,因为样例并不能覆盖所有的情况,请自己设计几组数据,争取卡死你的程序
21.如果出现问题,请你调试你的程序,请一定要分模块调试,不要从头跟到尾
22.如果你已经设计不出能卡住你的程序的数据,恭喜你可以做下一题了
23.为了万无一失,请你用return 0结束你的程序  
24.在内存允许的情况下,能开普通队列就不要用循环队列,能开下普通数组就不要用滚动数组(如果你不会打普通队列就老老实实用STL,但是如果你感觉时间卡的很紧,而且你会打,那就打吧)
25.在时间允许的情况下,能暴力就暴力,高精度能不压位就不压位,优化不需要的就不要
26.总之,在不超限制的前提下,能不优化就不优化,以减少代码量和出错概率为第一原则(除非你打优化都打烂了)
27.当比赛还剩下5~15分钟的时候,请不要再改动你的程序,即使你怀疑它对你的一个输入给出了错误答案,因为你自己算出的结果也有可能是错的
28.这个时候请你检查是否注释掉了该注释掉的东西,文件名是否写对,文件夹是否建对,请一定反复检查!
29.今年赛制更改,没有人知道究竟会变成什么样,所以,与其瞻前顾后,不如集中精力做出你眼前的题目来的实际
30.请记住,NOIP不怕暴力,怕瞎算,不怕不会,怕不敢

ХопHOP THE RP++,SCORE++,AFO--.

WHILE(true){

RP++,SCORE++,AFO--;
}

1|0 

2|020年更新

3|0关于语言 / IDE

  1. STL 是可以用的,放心用,最近很多人都找出了 2009 年的比赛规定然后说这个不能用之类云云
  2. pbds、__gcd、auto、lambda 表达式等这些 C++11 的内容都是不能用的,编译指令也是不能用的。你可以用 O2 测自己的程序速度,但千万不要留着交上去。
  3. 建议用 bits/stdc++.h(不会被禁的,除非最近发了什么文件明确说不行)。因为你缺少 cstdio 库就不能用 freopen,而编译是可以通过的,用万能头就可以防止这种情况的发生。
  4. 在能力所及范围内可以手写 queuestack 等,因为 STL 常数较大。
  5. define int long long 是可以的(int main→ signed main),而且个人建议在确保不会爆空间的情况下这么开,以备不时之需。当然肯定不会爆 int 就没必要开了。
  6. fread / fwrite 可,放心用。
  7. 如果有浮点数,计算的时候保险起见可以在每个数前面都加一个 (double),所有数字都加一个 .0
  8. 在 dev-c++ 中,点击 工具[T] - 编译选项[C] - 代码生成/优化 - 代码警告 中有一个 显示最多警告信息(-Wall),可以开一下,有时候可以告诉你有歧义的部分之类的,防止出现奇怪错误。
  9. 别开代码补全。
  10. 不建议使用英文单词作为变量名,有可能是保留字。可以采用缩写(next→ nxt)或驼峰(next→ Next),一般是不会出事的。当然也有 MessageBox 这种奇怪东西,不过一般很难撞车。
  11. 数组不要开小!数组不要开小!数组不要开小!

4|0关于策略

  1. 4h长线作战可以带一点补充能量的东西(比方说巧克力之类的),考场可以带食品饮品。
  2. 撤硕多去是有好处的,一个是让自己清醒一下,另一个是可能遇到认识的 dalao(不过今年似乎管得更严了?)。
  3. 开场可以先把题都看一遍,然后想一下怎么分配时间,难度一般都是递增的,所以正开就好。如果直接想到正解了可以先写正解,否则先写暴力,有分总比没分强。
  4. 有时间一定要对拍,一定要造边界数据,鬼知道你写的程序有没有奇怪的 bug。
  5. 如果对正解没信心,那么可以对有信心的部分分特判。你的程序是爆不了 100k 的上限的,你的代码有多好看也不会给你加分,分数要紧。
  6. 文件名 / 输出的字符串不要看错,多确认几次。可以直接从 pdf 文件中复制。
  7. 记得加 return 0
  8. 代码随时保存,对于不同的部分分可以创不同的文件存,免得混乱或者丢失。
  9. 想不到暴力就贪心。
  10. 心态放好,不要被周围的人影响,把周围的人都当成麻瓜。
  11. 模板不要背错。
  12. 多读几遍题,防止题意理解出错。
  13. 草稿纸不要省,对找规律推方程的帮助非常大。
  14. 考试最后检查一下文件输入输出,跑一下样例之类的,保证程序不会出奇怪的锅。

你可能感兴趣的:(C++基础知识,c++,算法,csp,noip)