那是你写挂了,关 O2 什么事。
放代码。
by UnyieldingTrilobite @ 2024-02-25 15:04:57
@[Vorest](/user/37040) O2 优化正常情况不会改变代码行为,前后出现除了时间消耗以外的变化是代码自己的问题,比如数组越界,未定义行为等。
by zhangbo1000 @ 2024-02-25 15:07:16
@[Vorest](/user/37040) 为啥我开 O2 [过了](https://www.luogu.com.cn/record/148334949)?
by pyy1 @ 2024-02-25 15:07:20
```cpp
#include <bits/stdc++.h>
using namespace std;
int n, m, t, k;
int nums[2020][2020];
int nu[2020][2020];
int main() {
cin >> t >> k;
memset(nu,0,sizeof nu);
memset(nums,0,sizeof nums);
for (int i = 0; i <= 2000; i++) {
for (int j = 0; j <= i; j++) {
if (j == 0 || j == i)
nums[i][j] = 1;
else
nums[i][j] = (nums[i - 1][j - 1] + nums[i - 1][j]) % k;
nu[i][j] = nu[i - 1][j] + nu[i][j - 1] - nu[i - 1][j - 1];
if (nums[i][j] % k == 0)
nu[i][j]++;
}
nu[i][i + 1] = nu[i][i]; //继承前缀和
}
for (int i = 1; i <= t; i++) {
cin >> n >> m;
if (m >= n)
m = n;
cout << nu[n][m] << endl;
}
return 0;
}
```
by Vorest @ 2024-02-25 15:14:30
@[UnyieldingTrilobite](/user/250637)
就是这样,评测样例出来是对的,关了也是对的
by Vorest @ 2024-02-25 15:15:20
@[UnyieldingTrilobite](/user/250637) ~~哈,金钩说话好霸气~~
by sapo1o @ 2024-02-25 15:16:23
@[Vorest](/user/37040) `nu[i][j] = nu[i - 1][j] + nu[i][j - 1] - nu[i - 1][j - 1];`
i 或 j 为 0 时访问到下标负一。
by UnyieldingTrilobite @ 2024-02-25 15:16:56
@[Vorest](/user/37040) 如果i-1是-1怎么办
by sapo1o @ 2024-02-25 15:17:04
@[sapo1o](/user/997236) 因为老典了……隔几天就能看到有人警示后人不要开 O2 的,一看全是代码挂了。
by UnyieldingTrilobite @ 2024-02-25 15:17:59
@[UnyieldingTrilobite](/user/250637) 不知道为什么不是RE
by sapo1o @ 2024-02-25 15:19:03