第一个循环 $i$ 会爆 $dp$ 数组吧
by Problem1613end @ 2024-04-14 15:06:37
说错了,是爆 $b$ 。
by Problem1613end @ 2024-04-14 15:08:17
@[Problem1613end](/user/1281623) 哦哦哦,分不清了,m和n混淆了,感谢
by kaito_936 @ 2024-04-14 15:21:25
@[Problem1613end](/user/1281623) 还是wa了俩,6和10
```cpp
#include <iostream>
using namespace std;
int dp[101][10001], n, m, temp, sum, b[10001][101];
int main()
{
cin >> n >> m;
for (int i = 0; i <= n; i++) {
for (int j = 0; j <= i; j++) {
if (j == 0) b[i][j] = 1;
else if (j == i) b[i][j] = 1;
else b[i][j] = b[i - 1][j - 1] + b[i - 1][j];
b[i][j]%=10007;
}
}
for (int j = 0; j <= n; j++) dp[0][j] = 1;
for (int i = 1; i <= m; i++) {
cin >> temp;
sum += temp;
for (int j = 0; j <= n; j++) {
if (j < sum) dp[i][j] = 0;
else dp[i][j] = dp[i - 1][j] * b[j - sum + temp][temp];
dp[i][j] %= 10007;
}
}
cout << dp[m][n] << endl;
return 0;
}
```
by kaito_936 @ 2024-04-14 15:33:29
@[Problem1613end](/user/1281623) 什么鬼啊,这明明b数组第二维爆了,它给我显示wa,不给我显示re。过了
```cpp
#include <iostream>
using namespace std;
long long dp[101][10001], n, m, temp, sum, b[10001][101];
int main()
{
cin >> n >> m;
for (int i = 0; i <= n; i++) {
for (int j = 0; j <= i&&j<101; j++) {
if (j == 0) b[i][j] = 1;
else if (j == i) b[i][j] = 1;
else b[i][j] = b[i - 1][j - 1] + b[i - 1][j];
b[i][j]%=10007;
}
}
for (int j = 0; j <= n; j++) dp[0][j] = 1;
for (int i = 1; i <= m; i++) {
cin >> temp;
sum += temp;
for (int j = 0; j <= n; j++) {
if (j < sum) dp[i][j] = 0;
else dp[i][j] = dp[i - 1][j] * b[j - sum + temp][temp];
dp[i][j] %= 10007;
}
}
cout << dp[m][n] << endl;
return 0;
}
```
by kaito_936 @ 2024-04-14 15:45:52