CSP 考前复盘:这一年,你都错了哪些不该错的点?
- 数组开太小?RE/WA!开太大?MLE!
- freopen 里面文件名写错?FST!
- 线段树写了这么个东西:
if(x<=middle){
//do something...
}
if(middle<=y){
//do something...
}
死循环!(将 middle<=y\(\to\)middle<y)
- 二分写成各种奇怪样子?TLE/WA!
- 输入 \(3\times10^5\) 以上个数不开 read/write?TLE!
- max/min 写反了?WA!
- 十年 OI 一场空?不开 ll 见祖宗!
- 遍历树写了这么个东西:
int tmp=head[now];
while(tmp>0){
if(son==father){
continue;
}
//do something...
tmp=edge[tmp].nxt;
}
死循环!(在 continue 前加一句 tmp=edge[tmp].nxt)
- 各种时间复杂度的范围:
| 时间复杂度 | \(1s\) 能跑 |
|---|---|
| \(O(2^n)\) | \(26\) |
| \(O(n^4)\) | \(100\) |
| \(O(n^3)\) | \(450\) |
| \(O(n^2)\) | \(8\times10^3\) |
| \(O(n\sqrt n)\) | \(2\times10^5\) |
| \(O(n\log n)\) | \(2\times10^6\) |
| \(O(n)\) | \(5\times10^7\) |
| \(O(n^{\dfrac34})\) | \(1\times10^{10}\) |
| \(O(n^{\dfrac23})\) | \(1\times10^{11}\) |
| \(O(\sqrt n)\) | \(1\times10^{15}\) |
| \(O(\log n)\) | \(1\times10^{18}\) |
| \(O(1)\) | \(\infty\) |
| 当然,你不能不考虑常数因子。 |
- 极限大/小数据不特判/开 ull?WA!
- 多测不清空?爆零两行泪!
- strlen 放在 for 里面?TLE!
floor(x)\(\to\)float/double,int(x)\(\to\)intif(x)\(=\)if(x!=0)\(\not=\)if(x>0)NO输出No/no?WA!- 大的 a 乘大的 b 不取模?WA!
- 对负数取模写这么个东西:
void modd(ll &x){
x+=mod;x%=mod;
}
WA!(在 x+=mod 前面加 x%=mod)
- 调试的输出不删?WA!
- 开了一大堆 ll?TLE!
- 什么?变量名重了?WA!
- 什么?定义了保留字?CE!
- 分类讨论的 if 里不加
continue?WA! char s[]总比string s好!毕竟后者可能会奇奇怪怪——WA!- 什么?
ceil直接写+1?WA! - 你以为你开 ll 就好了?
ans=(1<<60);
WA!(1\(\to\)1ll)
- 多测不输换行?WA!
- 筛素数的时候:
for(int i=1;i<=nn;i++){
if(nprime[i]==false){
//do something..
}
}
WA!(i=1\(\to\)i=2)
min不赋初值?WA!- 调试时把
freopen注释了没改回来?WA! - 线段树
pushdown之后 \(tag_{root}\) 不清空?WA!
以上是 CSP 前写的,继续往下写错题本本 0=w=0
- 建图写这么个东西:
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>x>>y;
//add_edge
}
死循环!(n->m)
本文来自博客园,作者:MY_Lee,转载请注明原文链接:https://www.cnblogs.com/StarDust-lmy/p/15435532.html
浙公网安备 33010602011771号