lmy-1st-Code-Style-Standard
2020-07-31
3 min read
头文件
- 万能头文件
#include <bits/stdc++.h>
- 有时使用宏定义的语句
#define pb push_back
#define rp(i,1,n) for(int i=1;i<=n;i++)
- 宏定义的数字严格大写
#define MOD 998244353
#define MAXN 200010
括号
- 大括号不换行
for(int i=1;i<=n;i++){
// do something
}
- 当大括号里的语句只有一条,或几条语句有连贯性且较为短小时,选择不使用大括号,并接着大括号前的语句
for(int i=1;i<=n;i++)cin>>a[i];
if(a>b)a=tmp,a=b,b=tmp;
循环
- 循环从1开始,使用,当为~时使用,使用i++(编译器比人聪明
for(int i=1;i<=n;i++)
for(int i=1;i<n;i++)
- 较为偏向于for循环而不是while
for( ; ; ;)
缩进
- 二格或四格缩进都可,主要偏向四格,二格看着比较tourist风格(
- 使用Tab而不是空格缩进
常规
- 不必加空格的地方尽量不加空格,有时为了代码方便调试会空一行
- 数组全局定义,使用宏定义的MAXN
- 选择 cin或cout,有时会写读入优化
- 宏定义里#define endl \n
- 宏定义ll而不是直接使用long long
- 会写 using namespace std;
- 自定义的namespace里不用缩进
namespace xxx{
int a,b,c;
//do something...
}
- bool函数里使用true或false,但在if语句里,使用0或1或!
bool judge(){
return true/false;
}
if(!judge()) / if(judge()==0)
- 使用%2==1或&1
- 在线段树中,不使用 和
build(p<<1,l,mid);
build(p<<1|1,mid+1,r);
- 不使用 C++11 的东西,考试不能用
- 一些比较模板的东西会压行压的很彻底
void add_edge(ll u,ll v){
edge[++tot].nxt=head[u];edge[tot].to=v;head[u]=tot;
edge[++tot].nxt=head[v];edge[tot].to=u;head[v]=tot;
}
ll gcd(ll a,ll b){ll r;while(b>0){r=a%b;a=b;b=r;}return a;}
其他的还有快速幂之类的