zoukankan      html  css  js  c++  java
  • hdu 4526

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4526

    思路:dp[i][j]表示前i辆车送走j个acmer的最小花费,然后就有dp[i][j]=dp[i-1][j-k]+k*t+d;(t为车辆到达的时间,d为花费),值得注意的地方是dp[0][0]=0,而其余都应该初始化为inf.

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<cmath>
     5 using namespace std;
     6 #define inf 1<<30
     7 int n,k,d,s,t,z;
     8 int dp[111][111];
     9 //dp[i][j]表示前i辆车送走j的acmer的最小花费,则有dp[i][j]=min(dp[i][j],dp[i-1][j-p]+p*time[i]+d);
    10 
    11 int main(){
    12     int _case;
    13     scanf("%d",&_case);
    14     while(_case--){
    15         scanf("%d%d%d%d",&n,&k,&d,&s);
    16         for(int i=0;i<=k;i++)
    17             for(int j=0;j<=n;j++)
    18                 dp[i][j]=inf;
    19         dp[0][0]=0;
    20         for(int i=1;i<=k;i++){
    21             scanf("%d%d",&t,&z);
    22             for(int j=0;j<=n;j++){
    23                 dp[i][j]=dp[i-1][j];
    24                 for(int k=1;k<=z;k++){
    25                     if(j>=k){
    26                         dp[i][j]=min(dp[i][j],dp[i-1][j-k]+k*t+d);
    27                     }
    28                 }
    29             }
    30         }
    31         if(dp[k][n]<inf){
    32             printf("%d\n",dp[k][n]);
    33         }else 
    34             puts("impossible");
    35     }
    36     return 0;
    37 }
    38 
    39 
    40 
    41     
    View Code
  • 相关阅读:
    一周内签到连续天数求解
    int型动态数组总结
    快速排序总结
    希尔排序总结
    冒泡排序的总结
    桶排序总结
    插入排序的总结
    选择排序的总结
    二分法的五种实现
    安装Yum源
  • 原文地址:https://www.cnblogs.com/wally/p/3090403.html
Copyright © 2011-2022 走看看