day4 A题 买彩票 AC代码 已压行 已挖坑

已挖坑!!!介意者慎入!!!

#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 个赞

帮你压了一下行

#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 个赞

9 太离谱了

2 个赞