*******平常写题就认真写题,听着音乐你咋WA的你都不知道QWQ*********************
1.要记得思考特殊情况
2.在有多组数据时,记得检查清空否
3.变量名最好开头大写保险(ming),禁用变量名:
Time,j0,j1,jn,y0,y1,yn,arg,div,right,ws,dec,hex,oct,exp,polar,real,signal
记得检查是否使用重复变量名
【大型憨憨现场:两层for的变量都叫i】
4.静态查错!浮躁是魔鬼!查完再试样例
5.循环队列:写“l≠r”,模数要正确且恰当(不要模整十整百整千,玄学TLE)
6.一场竞赛一场空,不开longlong见祖宗,莫得unsigned要退赛
【注:千万不要想着先写完再改long long,大概率样例还没过就爆了QWQ】
7.减法取模最好先加上模数,还需考虑模数与减数大小关系&建议打包为函数
void M_Sub(int& a,int b){// 定义了引用变量a,使得a的原变量的值被真实改变
a=(a+MOD-b)%MOD;//其中MOD为模数
}
8.for(...;***;...)中***处若调用函数会多次调用,可能造成潜在的莫名耗时
9.分块算法中切勿将块长和块数混为一谈
10.STL中vector默认从0开始
11.二分时,有两种情况:
r=mid,l=mid+1,mid=(l+r)>>1 //(1)
l=mid,r=mid-1,mid=(l+r+1)>>1 //(2)
12.右移运算是向下取整,而整数除法向零取整
13.码代码前确定可行性,想清楚自己要干嘛,思路不行就列大纲!
14.有无自环?有无重边?
15.码代码前想到的边界问题不要允许他在脑中一闪而过,写在纸上好好讨论
16.随时ctrl+s保存代码
17.运算优先级不确定就打括号,别想当然
18.变量声明时考虑是否需要赋初值
19.
A.lower_bound(x) //其中A为vector
lower_bound(A.begin(),A.end(),x)
写法1)比写法2)快得多
20.子函数忌用全局变量(特别是涉及到系统栈的问题)
21.浮点数要用fmax(),fmin()
22.警惕中间量爆int,代码中出现的常数在无特殊转换声明的前提下默认为int,如果一道题目在预判中就发现会爆int,请一定从始至终保持着long long意识,不要想着最后再改回来。
23.
struct node{
int id,d;
bool operator< (const node &t)const{
return t.d<d;
}
}Temp;
struct node{
int id,d;
}Temp;
bool operator <(const node &a,const node &b){
return a.d<b.d;
}
前者比后者更快!
24.没想到啊没想到,==的优先级都高于&
25.采用scanf、printf时,请一定注意占位符和变量类型的一致性,longlong int %lld %d 在这里切不可随意替换,不然可能会出现未知错误!!!!!!