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\)int
  • if(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)

posted @ 2021-10-21 22:27  MY_Lee  阅读(52)  评论(0)    收藏  举报