李鹏升
(李鹏升)
1
已挖坑!!!介意者慎入!!!
#include<bits/stdc++.h>
using namespace std;
int n,h,T,P[200],D[200],C[200],dp[200][1000],ans,a;
int main(){
cin>>n>>H>>T;
for(int i=0;i<n;i++)cin>>P[i]>>D[i]>>C[i];
for(int i=0;i<201;i++)for(int j=0;j<1001;j++)dp[i][j]=INT_MIN;
H*60;
for(int i=1;i<n;i++){
dp[i][H]=0;
for(int m=1;m*T<=H;m++)dp[i][H-m*T]=(P[i]+P[i]-(m-1)*(D[i]*m))/2;
}
for(int i=1;i<n;i++)for(int k=H;k>=0;k--)for(int m=0;k+m*T+C[i-1]<=H;m++){
a=(P[i]+P[i]-(m-1)*(D[i]*m))/2;
if(a>=0)dp[i][k]=max(dp[i][k],dp[i-1][k+m*T+C[i-1]])+a;
}
for(int i=0;i<n;i++)for(int k=H;k>=0;k--)ans=max(ans,dp[i][k]);
cout<<ans;
}
2 个赞
赵奕
(赵奕)
2
帮你压了一下行
#include<bits/stdc++.h>
using namespace std;int n,h,T,P[200],D[200],C[200],dp[200][1000],ans,a;int main(){cin>>n>>H>>T;for(int i=0;i<n;i++)cin>>P[i]>>D[i]>>C[i];for(int i=0;i<201;i++)for(int j=0;j<1001;j++)dp[i][j]=INT_MIN;H*60;for(int i=1;i<n;i++){dp[i][H]=0;for(int m=1;m*T<=H;m++)dp[i][H-m*T]=(P[i]+P[i]-(m-1)*(D[i]*m))/2;}for(int i=1;i<n;i++)for(int k=H;k>=0;k--)for(int m=0;k+m*T+C[i-1]<=H;m++){a=(P[i]+P[i]-(m-1)*(D[i]*m))/2;if(a>=0)dp[i][k]=max(dp[i][k],dp[i-1][k+m*T+C[i-1]])+a;}for(int i=0;i<n;i++)for(int k=H;k>=0;k--)ans=max(ans,dp[i][k]);cout<<ans;}
2 个赞