WA on #5,99分求调
查看原帖
WA on #5,99分求调
648623
hema5177楼主2024/3/17 15:46

没有降维,不会用stl所以马蜂像shift一样……用的是结构体=(

玄1关?

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
#include<algorithm>
#include<cstdlib>
#include<ctime>
using namespace std;
int n,m,a,b,c[1001],k1=1,dp[1001][1001];
struct bag
{
	int v[1001],w[1001],k2;
}s[1001];
int main()
{
	cin>>m>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>a>>b>>c[i];
		if(c[i]!=c[i-1]) k1=1;
		s[c[i]].w[k1]=a;
		s[c[i]].v[k1]=b;
		s[c[i]].k2++;
		k1++;
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=0;j<=m;j++)
		{
			int max2=-1;
			for(int k=1;k<=s[c[i]].k2;k++)
			{
				if(j>=s[i].w[k])
				{
					if(dp[i-1][j-s[i].w[k]]+s[i].v[k]>max2) max2=dp[i-1][j-s[i].w[k]]+s[i].v[k];
				}
			}
			dp[i][j]=max(dp[i-1][j],max2);
		}
	}
	cout<<dp[n][m];
}
2024/3/17 15:46
加载中...