zoukankan      html  css  js  c++  java
  • csu 1640 机智的刷题方式(完全背包)

    #include <stdio.h>
    #include <string.h>
    #include <iostream>
    #include <algorithm>
    #include <vector>
    #include <queue>
    #include <set>
    #include <map>
    #include <string>
    #include <math.h>
    #include <stdlib.h>
    #include <time.h>
    using namespace std;
    
    const int N=10000+10;
    const int inf=0x7FFFFFFF;
    int dp[N];
    
    int main()
    {
        int a,b,c,_,i,j,h,x,ans1,ans2;
        scanf("%d",&_);
        while(_--)
        {
            scanf("%d%d%d",&a,&b,&c);
            scanf("%d%d",&h,&x);
            for(i=0; i<N; i++) dp[i]=inf;
            dp[0]=0;
            for(i=1; i<=h+8; i++)
            {
                if(dp[i-1]+a<dp[i]) dp[i]=dp[i-1]+a;
            }
            for(i=2; i<=h+8; i++)
            {
                if(dp[i-2]+b<dp[i]) dp[i]=dp[i-2]+b;
            }
            for(i=5; i<=h+8; i++)
            {
                if(dp[i-5]+c<dp[i]) dp[i]=dp[i-5]+c;
            }
    
            ans1=inf;
            for(i=h; i<=h+8; i++)
            {
                ans1=min(ans1,dp[i]);
            }
    
            memset(dp,0,sizeof(dp));
            for(i=a; i<=x; i++)
            {
                if(dp[i]<dp[i-a]+1) dp[i]=dp[i-a]+1;
            }
            for(i=b; i<=x; i++)
            {
                if(dp[i]<dp[i-b]+2) dp[i]=dp[i-b]+2;
            }
            for(i=c; i<=x; i++)
            {
                if(dp[i]<dp[i-c]+5) dp[i]=dp[i-c]+5;
            }
            printf("%d
    %d
    ",ans1,dp[x]);
    
        }
        return 0;
    }

    版权声明:本文为博主原创文章,未经博主允许不得转载。http://xiang578.top/

  • 相关阅读:
    SQL的介绍及MySQL的安装
    git中级技能
    git基本用法
    git基本语法
    出租车数据分析
    使用Spark MLlib进行情感分析
    增量式编码器专题
    vue-loader的简单例子
    node爬虫(转)
    fs-extra 文件管理
  • 原文地址:https://www.cnblogs.com/xryz/p/4847950.html
Copyright © 2011-2022 走看看