• 经典动态规划 dp Rqnoj 57


    感觉学过背包的话应该就很容易做了,优先级人数最多,时间最少,那么泡到n个妹妹就有相应的最少时间,所以要开一个数组存储该人数下时间最小。。。

    仅此。。。

    View Code
     1 #include<iostream>
     2 #include<stdio.h>
     3 #include<stdlib.h>
     4 using namespace std;
     5 const int INF=1000000;
     6 const int N = 1002;
     7 int rmb[N],rp[N],tim[N];
     8 int dp[N][120][120],num[N];
     9 int Min(int a,int b)
    10 {
    11     return a<b?a:b;
    12 }
    13 int main()
    14 {
    15     int n,m,r;
    16     while(scanf("%d",&n)!=EOF)
    17     {
    18         for(int i=1; i<=n; i++)
    19             scanf("%d%d%d",&rmb[i],&rp[i],&tim[i]);
    20         scanf("%d%d",&m,&r);
    21         for(int k=1; k<=n; k++)
    22         {
    23             for(int i=0; i<=m; i++)
    24             {
    25                 for(int j=0; j<=r; j++)
    26                 {
    27                         dp[k][i][j]=INF;
    28                 }
    29             }
    30         }
    31         dp[0][0][0]=0;
    32         for(int i=0; i<=n; i++)num[i]=INF;
    33         for(int i=1; i<=n; i++)
    34         {
    35 
    36             for(int j=m; j>=rmb[i]; j--)
    37             {
    38                 for(int k=r; k>=rp[i]; k--)
    39                 {
    40                     for(int z=i; z>=1; z--)
    41                     {
    42                         if(dp[z-1][j-rmb[i]][k-rp[i]]+tim[i]<dp[z][j][k])
    43                         {
    44                             dp[z][j][k]=dp[z-1][j-rmb[i]][k-rp[i]]+tim[i];
    45                             num[z]=Min(num[z],dp[z][j][k]);
    46                         }
    47                     }
    48                 }
    49             }
    50         }
    51         int i;
    52         for(i=n; i>=0; i--)if(num[i]<INF)break;
    53         printf("%d\n",num[i]);
    54     }
    55     return 0;
    56 }
  • 相关阅读:
    再回首Java第九天
    再回首Java第八天
    再回首Java一周记
    再回首Java第六天
    再回首Java第五天
    再回首Java第四天
    再回首Java第三天
    再回首Java第二天
    再回首Java第一天
    关于i++和++i理解
  • 原文地址:https://www.cnblogs.com/nuoyan2010/p/2753975.html
Copyright © 2020-2023  润新知