WA 60pts
查看原帖
WA 60pts
747883
xhz0311楼主2023/10/4 14:14
#include <bits/stdc++.h>
using namespace std;
int n,m,tv,tw,opt,c;
struct node
{
	int V,W;
	int v[6],w[6],cnt=0;
} a[32005];
int dp[32005];
int main()
{
	scanf("%d %d",&n,&m);
	while (m--)
	{
		scanf("%d %d %d",&tv,&tw,&opt);
		if (opt==0)
		{
			c++;
			a[c].V=tv;
			a[c].W=tv*tw;
		}
		else
		{
			a[opt].cnt++;
			a[opt].v[a[opt].cnt]=tv;
			a[opt].w[a[opt].cnt]=tv*tw;
		}
	}
	for (int i=1; i<=c; i++)
	{
		for (int j=n; j>=a[i].V; j--)
		{
			dp[j]=max(dp[j],dp[j-a[i].V]+a[i].W);
			if (j>=a[i].V+a[i].v[1])
			{
				dp[j]=max(dp[j],dp[j-a[i].V-a[i].v[1]]+a[i].W+a[i].w[1]);
			}
			if (j>=a[i].V+a[i].v[2])
			{
				dp[j]=max(dp[j],dp[j-a[i].V-a[i].v[2]]+a[i].W+a[i].w[2]);
			}
			if (j>=a[i].V+a[i].v[1]+a[i].v[2])
			{
				dp[j]=max(dp[j],dp[j-a[i].V-a[i].v[1]-a[i].v[2]]+a[i].W+a[i].w[1]+a[i].w[2]);
			}
		}
	}
	cout<<dp[n];
	return 0;
}

WA on #3
输入:

2000 10
500 1 0
400 4 0
300 5 1
400 5 1
200 5 0
500 4 5
400 4 0
320 2 0
410 3 0
400 3 5

正确输出

7430

我的代码输出 7200。

求调。

2023/10/4 14:14
加载中...