数的类型
- 每种类型的最大值、最小值、所占字节
 - 不同类型下的 0x3f

运算符优先级
- (),[]
- !,+(正),-(负),~,++,–
- *,/,%
- +(加),-(减)
- 右移,左移
- <,<=,>,>=
- ==,!=
- &
- ^
- |
- &&
- ||
这就是一些常用运算符的优先级,大家码代码时还是最好加括号吧,尤其是位运算毒瘤状压DP害人不浅啊 。
卡常
最基本的卡常应该就是快读快输了。
#define getchar() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++)
char buf[(1<<21)+5], *p1 = buf, *p2 = buf;
inline int qread() {
char c = getchar();
int x = 0, f = 1;
while (c < '0' || c > '9') {
if (c == '-') f = -1;
c = getchar();
}
while (c >= '0' && c <= '9') {
x = x * 10 + c - '0';
c = getchar();
}
return x * f;
}
这是最纯正的快读。
注意,快读快输适合在数据较大时使用,否则后果自负 有可能有副作用。
for(register int i=1;i<=n;++i) {
for(register int j=1;j<=n;++j) {
for(register int k=1;k<=n;++k) {
......
}
}
}
- inline
短函数可以前面加上 inline 内联函数,长函数加了会自动屏蔽。 原理就是它是将程序执行转移到被调用函数所存放的内存地址,将函数执行完后,在返回到执行此函数前的地方,减少资源开销(进栈出栈之类的)。小函数用 inline 是不戳滴。
举一个例子:
inline int lc(int p) {return p<<1;}
inline int rc(int p) {return p<<1|1;}
线段树中的左右儿子经常被调用,所以可以加一个 inline 优化一下。
- 用库函数 vs 手写库函数
用
max
?
\max
max 举例子。     发现手写快一些,有兴趣的朋友们也可以测试一下
min
?
,
a
b
s
\min, abs
min,abs 等函数。
咕咕咕
|