萌新初学两年半求助
查看原帖
萌新初学两年半求助
544571
Locix_Elaina_Celome楼主2023/2/1 17:30

写的暴力,不用管TLE,但是第四个点WA了

#include<bits/stdc++.h>
#define ag std
#define int long long
using namespace ag;
int n,p,m;
int a[2005];
int b[2005];
int as[2005];
int bs[2005];
int dp[2005][2005];
signed main(){
	cin>>n>>p>>m;
	for(int i=1;i<=n;i++)scanf("%lld%lld%lld%lld",&a[i],&b[i],&as[i],&bs[i]);
	memset(dp,0x8f,sizeof dp);
	dp[0][0]=0;
	for(int i=1;i<=n;i++){
		for(int j=0;j<=p;j++){
			dp[i][j]=max(dp[i][j],dp[i-1][j]);
			dp[i][j]=max(dp[i][j],-j*a[i]);
			if(i>=m+1) {
				for(int k=max(j-as[i],0ll);k<j;k++)
					dp[i][j]=max(dp[i][j],dp[i-m-1][k]-(j-k)*a[i]);//在第i天要买票
				for(int k=j+1;k<=min(j+bs[i],p);k++)
					dp[i][j]=max(dp[i][j],dp[i-m-1][k]+(k-j)*b[i]);//第i天卖票
			}
		}
	}
	cout<<dp[n][0];
	
}
//dp[i][j]//在第i天后(不一定有交易),手上有j份票,累计最大受益
2023/2/1 17:30
加载中...