10pts求助(玄关)
查看原帖
10pts求助(玄关)
1041498
the_handsome楼主2025/2/5 16:18

代码在这里,暴力能过得也过不了,求助:

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=2005;
int ans;
int f[N][N],T,maxp,W;
struct day
{
	int ap,bp,as,bs;
} d[N];
signed main()
{
	cin>>T>>maxp>>W;
	for(int i=1;i<=T;i++)
		cin>>d[i].ap>>d[i].bp>>d[i].as>>d[i].bs;
	for(int i=1;i<=T;i++)
		for(int j=0;j<=maxp;j++)
		{
			if(i>=W+2)
			{
				f[i][j]=max(f[i][j],f[i-1][j]);
				for(int k=1;k<=min(j,d[i].bs);k++)
					f[i][j]=max(f[i][j],f[i-W-1][j-k]+k*d[i].bp);
				for(int k=min(j,d[i].as);k>=1;k--)
					f[i][j]=max(f[i][j],f[i-W-1][j-k]-k*d[i].ap);
			}
			else
				f[i][j]=max(f[i][j],f[i-1][j]);
		}
	for(int j=0;j<=T;j++)
	{
		for(int i=0;i<=maxp;i++)
			cout<<f[j][i]<<' ';
		cout<<endl;
	}
	return 0;
}
2025/2/5 16:18
加载中...