卡数据了吧
by maple_trees_112 @ 2023-09-28 23:14:06
@[__W_C__](/user/1041338)
可能是你的写法有些奇怪,我这么写开2001*2001大小是可以通过的。
```cpp
#include<iostream>
using namespace std;
const long long MAXN = 2e3 + 1,MAXM = 2e3;
long long n,m,k,t,c[MAXN][MAXN],d[MAXN][MAXN];
int main(){
cin >> t >> k;
for (long long i = 0; i <= MAXM; i++) {
c[i][0] = 1;
for (long long j = 1; j <= i; j++) {
c[i][j] = (c[i - 1][j] + c[i - 1][j - 1]) % k;
}
}
for (long long i = 0; i <= MAXM; i++){
for (long long j = 1; j <= i; j++){
d[i][j] = d[i][j - 1] + !c[i][j];
}
}
while (t--){
cin >> n >> m;
long long ans = 0;
for (long long i = 1; i <= n; i++){
ans += d[i][min(i,m)];
}
cout << ans << '\n';
}
return 0;
}
```
by heyx0201 @ 2023-09-28 23:39:27
`dp[i][i + 1] = dp[i][i];`
`i+1` 可以是 2001,就寄了。所以需要开到 2002。
by Anamnesis @ 2023-09-28 23:41:53
```cpp
dp[i][i + 1] = dp[i][i];
```
答咩,i + 1 会炸的咩
by _qwe_wzj_ewq_ @ 2023-09-29 07:53:52