求助,第五个测试点ac不了
查看原帖
求助,第五个测试点ac不了
938216
w1436736620楼主2024/3/7 20:03
#include<iostream>
#include<algorithm>
using namespace std;
int n, m, q;
const int N = 1010, M = 1010;
int w[N], v[N], num[N];
int f[N], F[N][3];

int main()
{
	cin >> n >> m;
	for (int i = 1; i <= m; i++)
	{
		cin >> w[i] >> v[i] >> num[i];
	}
	for (int i = 1; i <= m; i++)
	{
		bool b = 1;
		if (F[num[i]][1] != 0) b = 0;
		for (int j = n; j >= 0; j--)
		{

			if (j >= w[i])
			{
				if(b == 0)
				{
					int a = f[j];
					f[j] = max(f[j], f[j - w[i] + F[num[i]][1]] + v[i] - F[num[i]][2]);
					if (f[j] != a)
					{
						F[num[i]][1] = w[i];
						F[num[i]][2] = v[i];
					}

				}
				else
				{
					int a = f[j];
					f[j] = max(f[j], f[j - w[i]] + v[i]);
					if (f[j] != a)
					{
						F[num[i]][1] = w[i];
						F[num[i]][2] = v[i];
					}
				}

			}
		}
	}
	cout << f[n];
}
2024/3/7 20:03
加载中...