暴力 50pts WA#3求条
查看原帖
暴力 50pts WA#3求条
1398636
yezhengjie0000001楼主2025/7/24 08:20
#include<bits/stdc++.h>
using namespace std;
int t,maxp,w;
int dp[2001][2001];
int ap[2001];
int bp[2001];
int as[2001];
int bs[2001];
int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cin>>t>>maxp>>w;
	for(int i=0;i<t;i++){
		cin>>ap[i]>>bp[i]>>as[i]>>bs[i];
	}
	memset(dp,-0x3f,sizeof dp);
	for(int i=0;i<=as[0];i++){
		dp[0][i]=-i*ap[0];
	}
	for(int i=1;i<t;i++){
		for(int j=0;j<=maxp;j++){
			for(int u=0;u<=i-w-1;u++){
				for(int v=j;v<=min(maxp,j+bs[i]);v++){
					dp[i][j]=max(dp[i][j],dp[u][v]+(v-j)*bp[i]);
				}
				for(int v=max(0,j-as[i]);v<j;v++){
					dp[i][j]=max(dp[i][j],dp[u][v]-(j-v)*ap[i]);
				}
			}
		}
	}
	int ans=0;
	for(int i=0;i<=maxp;i++){
		ans=max(ans,dp[t-1][i]);
	}
	cout<<(ans==-0x3f3f3f3f?0:ans);
	return 0;
}
2025/7/24 08:20
加载中...