【求调】【玄关】10pts,AC on #5
查看原帖
【求调】【玄关】10pts,AC on #5
466596
MorningStarCzy楼主2025/1/16 17:48
#include<bits/stdc++.h>
using namespace std;
const int N=505;
int w[N],f[N],v[N];
int p[N][N],p2[N][N],dp[N][N];
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0),cout.tie(0);
	int n,q;cin>>n>>q;
	for(int i=1;i<=n;i++) cin>>w[i]>>f[i]>>v[i];
	memset(p,-1,sizeof(p));
	memset(p2,-1,sizeof(p2));
	memset(dp,-1,sizeof(dp));
	dp[0][0]=0;
	for(int i=1;i<=500;i++)
		for(int j=500;j>=w[i];j--)
		{
			for(int k=501;k>=501-f[i];k--)
				dp[j][501]=max(dp[j][501],dp[j-w[i]][k]+v[i]);
			for(int k=500;k>=f[i];k--)
				dp[j][k]=max(dp[j][k],dp[j-w[i]][k-f[i]]+v[i]);
		}
	for(int i=0;i<=500;i++)
		for(int j=501;j>=0;j--)
			p2[i][j]=max(p2[i][j+1],dp[i][j]);
	for(int i=0;i<=500;i++)
		for(int j=501;j>=0;j--)
			p[i][j]=max(p[max(0,i-1)][j],p2[i][j]);
	while(q--)
	{
		int x,y;cin>>x>>y;
		if(p[x][y]!=-1) cout<<p[x][y]<<endl;
		else puts("0");
	}
	return 0;
}

看着题解写的,写完了交上去10分,看了无解输出0后还是10分,把题解弄下来改一改交上去还是10分,到底出了什么错啊???(别说我抄题解,那也是万不得已,真的搞不明白结果弄好之后更不明白了)。

2025/1/16 17:48
加载中...