卡常小技巧
- 使用递归次数较多的函数时(如:分治、\(\text{DFS}\) 时)使用
inline
; - 使用
string
做为字符串时:- 若能改成字符数组,就改成字符数组;
- 若不能,就用快读读入。(如:P9016 [USACO23JAN] Find and Replace G)
模板
inline read(string &x){
char tmp;read(tmp);
while(tmp!=' '&&tmp!='\n'&&tmp!='\r'){
x.push_back(tmp);tmp=getchar();
}
}
- 取模次数过多?使用快速取模!
模板
long long QMMM, QMPP;
void init(int pp) { QMMM = ((__int128)1 << 64) / pp; QMPP = pp; }
inline int o(int x){
return x - ((__int128(x) * QMMM) >> 64) * QMPP;
}