警示后人
查看原帖
警示后人
589961
steambird楼主2024/11/28 21:28

本题两个常错点:

  • 如果形如 for (auto &i : vec) { /* ... */ } 的循环中对 vec(vector 类型)进行了 push_back 等操作,整个循环可能会炸(因为迭代器失效);
  • 如果你写出了这样的代码:
for (int k = latest[qt]; k >= a[i]; k--) {
  qs[k].push_back(qt);
}
latest[qt] = a[i]-1;

注意,这样是错的,你会 TLE on #8, #9 或者 #10。如果 latest[qt] > a[i],下面的赋值语句仍然会执行,latest[qt] 随外层循环(1n1 \sim n)单调下降的性质将无法保证,复杂度将退化。

2024/11/28 21:28
加载中...