• hdu--1158--dp


    不会做啊 这么水的dp =-=

    怨死 。。。。    touch      me

    我下面内容 都是来自   传送

    dp[i][j]表示前i个月最后一个月的总人数为j所花的最小费用
     
     
    状态移动方程:dp[i][j] = min{dp[i-1][k] + cost[i][j]},其中cost[i][j]是第i月的花费,
    1~当k<=j时,第i个月请了人所以cost[i][j] = j*salary + (j-k)*hire
    2~当k>j时,第i个月炒了人,所以cost[i][j] = j*salary + (k-j)*fire
     
    输入时记录了最多需要的人数。
     
    因为他给的是每个月最少需要的人数,所以for(该月需要的最少人数——max_people)而不是for(1——该月需要的最少人数)
     
    直接初始化第一个月。

     1 #include<stdio.h>
     2 #include<string.h>
     3 
     4 const int INF=99999999;
     5 
     6 int dp[15][10010];
     7 int people[15];
     8 
     9 int main(){
    10 
    11     //freopen("input.txt","r",stdin);
    12 
    13     int n;
    14     int hire,salary,fire;
    15     while(scanf("%d",&n) && n){
    16         scanf("%d%d%d",&hire,&salary,&fire);
    17         int max_people=0;
    18         int i,j,k;
    19         for(i=1;i<=n;i++){
    20             scanf("%d",&people[i]);
    21             if(max_people<people[i])
    22                 max_people=people[i];
    23         }
    24         for(i=people[1];i<=max_people;i++)      //初始化第一个月
    25             dp[1][i]=i*salary+i*hire;
    26         int min;
    27         for(i=2;i<=n;i++){
    28             for(j=people[i];j<=max_people;j++){
    29                 min=INF;        //有了这个前面就不需要用O(n^2)初始化dp了。
    30                 for(k=people[i-1];k<=max_people;k++)
    31                     if(min>dp[i-1][k]+(j>=k?(j*salary+(j-k)*hire):(j*salary+(k-j)*fire)))
    32                         min=dp[i-1][k]+(j>=k?(j*salary+(j-k)*hire):(j*salary+(k-j)*fire));
    33                 dp[i][j]=min;
    34             }
    35         }
    36         min=INF;
    37         for(i=people[n];i<=max_people;i++)
    38             if(min>dp[n][i])
    39                 min=dp[n][i];
    40         printf("%d
    ",min);
    41     }
    42     return 0;
    43 }
    View Code
    just follow your heart
  • 相关阅读:
    java 缓存框架java caching system使用示例
    2020牛客寒假算法集训营2
    VJ train1 O统计问题 题解
    ACM#学习心得0
    2020牛客寒假集训营1
    高精度加减乘除
    VJ train1 I彼岸
    VC编译常见错误
    EVC开发MapXMobile 环境搭建
    用Evc+Pocket PC 2003 开发MapxMobie
  • 原文地址:https://www.cnblogs.com/radical/p/3875366.html
Copyright © 2020-2023  润新知