外观
oi-warning.md---
title: 疯狂进食(持续更新)
createTime: 2024/12/11
categories:
- IT
tags:
- OI
- OI-note
---
在这里存点我的黑历史((
## inline
```cpp
inline func(...){
...
}
```
在本地能过,但是交上去会爆零。
## 加强
写完[蛇蛇放置](https://www.luogu.com.cn/problem/U511581)的 std 之后发现跑得太快了,于是增大了一下数据范围。
但是我没改 std。
> 推销:**来做蛇蛇放置喵,来做蛇蛇放置谢谢喵**
## size
```cpp
int size[maxn];
```
您的 $\color{#cc0}\text{CE}$ 好帮手。
## 字符
```cpp
char c;
cin >> c;
int a = c-0;
```
导致我的 NOIP 1h 没了的罪魁祸首。
## move
```cpp
void move(bool x){
...
}
...
move(xxx);
```
`std::move`:亻尔女子。
:::tip C++ Reference
```cpp
template < class T >
constexpr std::remove_reference_t<T>&& move( T&& t ) noexcept;
```
:::
## 转置
> 第二行 $n$ 个整数 $A_i$。
> 第三行 $n$ 个整数 $B_i$。
```cpp
for (int i=1; i<=n; i++){
cin >> a[i] >> b[i];
}
```
转置领域大神!
## 行列不分
这次是[摸个鱼鱼](https://www.luogu.com.cn/problem/U514748) checker 出锅,满屏 $\color{#0E1D69}\text{UKE}$。
```cpp
n = inf.readInt();
m = inf.readInt();
k = inf.readInt();
for (int i=1; i<=n; i++){
for (int j=1; j<=n; j++){
a[i][j] = inf.readInt();
}
}
```
## 有些{话|变量}明明{想|生成}好了却无法{说出口|输出}
```python
k = strong_rand(K, 1) if K>2 else K
test_data.input_writeln(n, m)
```
让我们恭喜[摸个鱼鱼](https://www.luogu.com.cn/problem/U514748)拿下双杀。
## n 有双重人格
```cpp
int n;
...
int main(){
int n;
cin >> n;
}
```
## 双重循环
```cpp
inline void init_st(){
for (int i=1; i<=n; i++){
for (int j=1; i+(1<<j)-1<=n; j++){
st[i][j] = gcd(st[i][j-1], st[i+(1<<(j-1))][j-1]);
}
}
}
```
ST 表/区间 DP 笑传之初创备。
## 左右不分
```cpp
int len = l - r + 1;
```
我已无法理解此人。
## 自动取整
```cpp
int dis = sqrt(x*x + y*y);
```
我将无情地割舍一切(丢掉小数部分)
## 广义滑动窗口
```cpp
for (int i=1; i<=i+n; i++)
```
小明永远地追逐着小红,
小红只是{回以|return}
$\color{red} 3221225477$. {.inline}
## 变量名灾难
```cpp
int maxa = -1, maxi=-1;
for (int i=1; i<=n; i++){
if (ans[i] > maxi){
maxa = ans[i];
maxi = i;
}
}
```
~~居然能拿 20 分,这数据也是没谁了。~~
## 维度错乱
众所周知,在数组中一般采用如下坐标系:
```
.-------->j
|
|
|
v
i
```
然而某人把它和计算机图形学上常用的坐标系
```
.-------->x
|
|
|
v
y
```
混淆了。
## 史上最奇特的 TLE 方法
每次清空一个长度为 $\sum n$ 的数组,导致复杂度退化为 $O(T\sum n)$,光荣 $\color{#0E1D69}\text{TLE}$.
## 符号、作用域与连锁反应
```cpp
int l=1; r=S/(a*b);
```
本来会报错的,但是我又有一个叫做 `r` 的全局变量……
RE: 从 $0$ 分开始的 OI 生活
## 文件 IO
```cpp
freopen("in.txt", "r", stdin);
```
没删,甚至还 AC 了两个点,很有迷惑性,调了 10min,智商--;
## 氧气是剧毒的
```cpp
int n, m;
scanf("%lld%lld", &n, &m);
cout << n << m;
return 0; // <--
canvas cv;
// 里面有一个大数组
```
栈空间是在函数运行开始时分配的。如果是 `-O0` 就会爆栈。但是由于 `-O1` 以上的优化等级不会编译死代码,`return 0` 后面的就被忽略了。
~~这个故事告诉我们氧气是剧毒的。~~
## UB 醉氧
```cpp
inline int eval(const bool is_odd, const vector<int> &co, int rt) {
int val = -1;
for (int u: co) {
if (val!=-1 && w[u]!=-1 && val!=w[u]) {
return 0;
}
val = w[u];
if (is_odd && val > 0) {
return 0;
}
}
if (!is_odd && val==-1) {
return V;
}
}
```
当 $\texttt{is\_odd}=1, \texttt{val}=-1$ 时却出现了 $(\texttt{!is\_odd \&\& va1==-1}) = 1$,为什么呢?
关掉 O2 之后发现结果不一样了,最后在成堆的警告中发现这个函数没返回值,UB 了。
这个故事告诉我们 UB 会醉氧。
以及告诉我们别嫌 warning 长,要一个一个改。
## 未完待续(希望别续)