有个地方不理解
查看原帖
有个地方不理解
757647
zhangzhixing99楼主2024/1/26 11:25

修改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帮忙解答一下

2024/1/26 11:25
加载中...