- 乘法(连乘每次都要取模),减法忘记取模
a = ((a - b) % M + M) % M; // 减法
a = 1ll * a * b % M; // 乘法
c = 1ll * a * b % M * c % M * ... * z % M; // 连乘
- 多测忘记清空
- 使用STL或用数组模拟队列,栈等数据结构时忘记判空
- 数位dp记忆化搜索版本,记忆化数组\(f\)是不考虑\(\text{high}\)和\(\text{lead}\)的结果
ll dfs(int u, ..., bool high, bool lead)
{if (u < 1) {...return ...;}if (!high && !lead && f[u][cons][val] != -1) return f[u][cons][val]; // 注意是!high && !lead...if (!high && !lead) f[u][cons][val] = ret;return ret;
}
- 数组开小,注意算好数组大小
- 注意运算优先级(尤其位运算)
类别 | 运算符 | 结合顺序 |
---|---|---|
后缀 | () [] -> . ++ - - | 从左到右 |
一元 | + - ! ~ ++ - - (type)* & sizeof | 从右到左 |
乘除 | * / % | 从左到右 |
加减 | + - | 从左到右 |
移位 | << >> | 从左到右 |
关系 | < <= > >= | 从左到右 |
相等 | == != | 从左到右 |
位与 AND | & | 从左到右 |
位异或 XOR | ^ | 从左到右 |
位或 OR | | | 从左到右 |
逻辑与 AND | && | 从左到右 |
逻辑或 OR | || | 从左到右 |
条件 | ?: | 从右到左 |
赋值 | = += -= *= /= %=>>= <<= &= ^= |= | 从右到左 |
逗号 | , | 从左到右 |
摘自菜鸟教程