我的码风
我的码风
1. 头文件
缺省源里是 #include<cstdio>
,用的时候缺啥补啥。不打万能头。
2. 输入输出
习惯用快读快写。
int re()
{
int s=0,f=1;char ch=getchar();
while(ch>'9'||ch<'0')
{
if(ch=='-')f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9')
s=s*10+ch-48,ch=getchar();
return s*f;
}
void wr(int s)
{
if(s<0)putchar('-'),s=-s;
if(s>9)wr(s/10);
putchar(s%10+48);
}
int n=re();wr(n);
3. 大括号
典型的下派。
for(int i=fir[now];i;i=nex[i])
{
int p=poi[i];
...
...
...
}
较短语句不加括号。
for(int i=1;i<=n;i++)
a[i]=re();
不过结构体、类和名字空间习惯右派,可能感觉右边空空的,不习惯。
srtuct Seg_Tree{
int le,ri;
int val,tag;
}T[inf<<2];
4. 函数
不是很喜欢写函数,一般只有递归和多次调用的时候写。
那种不被多次调用的(如 SPFA,kruskal,等)习惯直接写在主函数中。
不用 namespace,我是绝对不可能告诉你是因为我不会才不用的。
5. 结构体
在结构体方面,我就是下派的叛徒。
会写 operator
,感觉比较好看。
大多数时候不封装函数,少数情况指树套树,那时候会有结构体嵌套结构体。
struct Segment_Tree{
//内层树
struct Seg_Tree{
int lc,rc,sum;
}T[inf*300];
//...
}xds;
struct Seg_Tree{
//外层树
int le,ri,gen;
}T[inf<<2];
6. 变量名
随心而欲,时长时短。
STL 序列式容器一律用 h
,关联式容器一律用 T
。
除非变量名冲突。
其他方面,小函数中多用单变量名,大函数会根据意思设置变量名(但也只是拼音)。
7. 宏
说实话,用的不多。
define int long long
邪教,但我用习惯了。define IT set<C_Tree>::iterator
不喜欢auto
,珂学家都懂。
好像还有,但我找不到了。
8. STL
虽然常数大,但是经常用,比较懒。
9. 压行
不严重的压行习惯,(压但不完全压)。
比如三行树状数组。
不过不习惯有空行存在。
贴几个比较长的代码吧,感觉有纪念意义的。
为了能看懂代码,变量名基本是汉语拼音的缩写。
来棵树套树吧,Fhq 短小精悍。
一个靠着错误的二分和玄学的卡时暴力 A 掉的树剖。
顺便学了学 auto
怎么用。
迭代器调到死的珂朵莉树。
莫队爆艹 1e6。