NOIP 小总结(合众之力)

来源:互联网 发布:linux公社资源共享ftp 编辑:程序博客网 时间:2024/04/28 00:40


NOIP前夕众多57级们的一些总结的集合,感谢提供总结的各位qwq,很可能还有小错误,跪求大佬指正(:з」∠)


一些可能用得到的东西
对拍
程序中显示的小错误
NOIP小知识点总结


不确定大小的数组在不MLE的情况下尽量开大
考虑极限数据,处理各种边界
打对手读。emmmm
注意Windows和Linux的不同
如换行Linux下\r\n,如果考场是Win xp long long请用 %I64d,交卷时别忘了改回来(%lld)
读入字符串%s不加&
短路运算符 && ||
next,time,y1,pipe,rank,link这些不要做变量名
数组一定不要开太大,int 型 128MB~3200万,256MB~6400万,注意char 占1字节,long int 占4字节,long long 占8字节 ,double 占8字节
char,short ,int ,long,long long,unsigned long long数据范围
滚动数组的重要性
数组下标中有减法的话一定要注意判边界,不能访问负数下标(windows下不会报错)
能不memset就不memset,次数多了会很慢
strlen一定不能放在循环里,不然会T掉
gets可以接收空格(yi hang);
string 类型的字符串必须整个赋值,不能只给其中的一位赋值string不能赋值单个字符,但是可以用加法
stl的双端队列会很慢,不如手打
SPFA需判负环
dijkstra不能跑负权边
double 注意精度
cmath 功能:计算x的y次幂。注意强转
二分浮点数时,二分边界多精确一点(精确太多会T),一般比要求的精度多一点就可以了
如果要开多维数组,把空间小的放在前面,会更好
数组sort时,一定把里面的排序区间写对(尤其是最小生成树里,别顺手写成n),写sort时先想一下再打
lca的两层循环千万不要打错了
定义longlong类型的变量,scanf,printf输入输出时,如果用的%d就会发生一些秘制错误,比如突然一个和输入毫无关系的变量就变成0了
有的时候,手打队列比queue好用,不要因为偷懒上来就打queue
long double这竟然不能直接定义输入,实现的话需要定义int变量再强转成long double才可以,不然会莫名挂掉
关于精度问题则是要注意类型的转换,像是求一个double却在到处里都是int,容易出现错误,尤其注意pow里面emmmmm
if/for/while () 后面手残打个’;’
写暴力的时候拿全带特判的分,比如给你棵树,有一条链的数据点
一些n == 1,n == 2可以手算打表的点,这些特判可能比较麻烦,但是好拿分,比如斗地主的30分打表;
注意运算符的优先级,用位运算的时候拿不准就都加括号,特别注意位运算和逻辑运算符(==,<=),的优先级问题
数组别开小了,尤其是倍增的时候
文件操作别写错,尤其是r和w,这个翻车无输出简直是人间惨剧惨绝人寰
文件操作不写错也不代表一定躲得过这一劫,很有可能把freopen一个激动开到int或者void函数中然后无限死循,也很有可能考试考完,打完cpp A,B,C之后,结果给文件名叫B和C的cpp文件中一个激动粘贴上了freopen(“A.in”,“r”,stdin); 这样会造成无限TLE,从第一个点开始T完所有点,而且时间几乎一样,人间惨案
一定要注意题目是不是给定“过滤行尾回车空行”,有时顺手写个puts(“”);或者‘\n’会直接开心的PE掉(虽然显示的仍是WA ε=(′ο`*))))