• 钓鱼


     1 #include<iostream>
     2 #include<cstdio>
     3 using namespace std;
     4 const int maxn=107;
     5 int n,h,ans;
     6 int f[maxn],d[maxn],t[maxn],dp[maxn][maxn],st[maxn],num[maxn][maxn];
     7 int main(){
     8   cin>>n>>h;h*=12;
     9   for(int i=1;i<=n;i++) cin>>f[i];
    10   for(int i=1;i<=n;i++) cin>>d[i];
    11   for(int i=1;i<n;i++) {cin>>t[i];st[i]=st[i-1]+t[i];}
    12   for(int i=2;i<=n;i++) {dp[i][st[i-1]]=f[i];num[i][st[i-1]]=1;} dp[1][1]=f[1];num[1][1]=1;
    13   for(int j=2;j<=h;j++){
    14       if(f[1]-d[1]*(j-1)<=0) break;
    15     dp[1][j]=dp[1][j-1]+f[1]-d[1]*(j-1);
    16   }
    17   for(int i=2;i<=n;i++){
    18     for(int j=st[i-1];j<=h;j++){
    19       if(dp[i][j]<dp[i-1][j-t[i-1]]+f[i]){
    20         dp[i][j]=dp[i-1][j-t[i-1]]+f[i];num[i][j]=1;
    21 
    22       }
    23       for(int k=j-1;k>=1;k--){
    24           int lft=0;
    25           for(int u=k;u<=j;u++){
    26           lft+=f[i]-d[i]*num[i][k]*(u-k+1);  
    27         }
    28         if(dp[i][j]<dp[i][k]+lft){
    29           dp[i][j]=dp[i][k]+lft;num[i][j]=num[i][k]+1;
    30           cout<<"r2 "<<i<<" "<<j<<" "<<dp[i][j]<<endl; 
    31         }
    32         if(lft-d[i]<0) break;
    33       }
    34     }
    35   }
    36   for(int i=1;i<=n;i++){
    37     for(int j=1;j<=h;j++)
    38       cout<<dp[i][j]<<" ";
    39     cout<<endl;
    40   }
    41   for(int i=1;i<=n;i++){
    42     for(int j=1;j<=h;j++)
    43       ans=max(ans,dp[i][j]);
    44   }
    45   cout<<ans<<endl;
    46   return 0;
    47 } 
  • 相关阅读:
    go2基本类型
    go1
    android studio 使用
    ios34---GDC,dispatch_once
    ios33--线程通信
    ios33--线程安全
    ios32---线程的状态
    ios31--NSThread
    ios30---pthread, NSThread, GCD, NSOperation
    ios29--多线程
  • 原文地址:https://www.cnblogs.com/lcan/p/9691927.html
Copyright © 2020-2023  润新知