修改24行前 WA
#include <bits/stdc++.h>
using namespace std;
int sv[2510], f[2510];
int main()
{
int n, m;
cin >> n >> m;
sv[0] = 2 * m;
for (int i = 1; i <= n; ++i)
{
int add;
cin >> add;
sv[i] = sv[i - 1] + add;
}
memset(f, 0x7f, sizeof f);
f[0] = 0;
for (int i = 1; i <= n; ++i)
{
for (int j = n; j >= i; --j)
{
f[j] = min(f[j], f[j - i] + sv[i]);
}
}
cout << f[n] - m << endl;
return 0;
}
修改24行后 AC
#include <bits/stdc++.h>
using namespace std;
int sv[2510], f[2510];
int main()
{
int n, m;
cin >> n >> m;
sv[0] = 2 * m;
for (int i = 1; i <= n; ++i)
{
int add;
cin >> add;
sv[i] = sv[i - 1] + add;
}
memset(f, 0x7f, sizeof f);
f[0] = 0;
for (int i = 1; i <= n; ++i)
{
for (int j = i; j <= n; ++j)
{
f[j] = min(f[j], f[j - i] + sv[i]);
}
}
cout << f[n] - m << endl;
return 0;
}
为什么 那个dalao帮忙解答一下