A题买彩票求助

#include<bits/stdc++.h>
using namespace std;
int dp[2005][6005],ans=0;
int n,h,t,p[2005],d[2005],c[2005];
int main(){
	scanf("%d%d%d",&n,&h,&t);
	h=h*60;
	for(int i=1;i<=n;i++){
		for(int j=0;j<=h;j++){
			dp[i][j]=INT_MIN;
		}
	}
	for(int i=1;i<=n;i++){
		scanf("%d%d%d",p+i,d+i,c+i);
		dp[i][h]=0;
	}
	
	for(int i=1;i<=n;i++){
		
		for(int j=1;j*t<=h;j++){
			
			dp[i][h-j*t]=(p[i]+p[i]+(j-1)*d[i])*j/2;
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=h;j>=0;j--){
			for(int k=0;k<=p[i]/d[i];k++){
				dp[i][j]=max(dp[i][j],dp[i-1][j+t*k+c[i-1]]+(2*p[i]-(k-1)*d[i])*k/2);
			}
		}
	}
	for(int i=1;i<=n;i++){
		ans=max(ans,dp[i][0]);
	}
	printf("%d\n",ans);
	//printf("%d%d%d",dp[0][40],dp[1][30],dp[1][31]);
	
	
	return 0;
}
1 个赞