• HDU 1300


    http://acm.hdu.edu.cn/showproblem.php?pid=1300

    这题大一就看到过,当时没读懂题目,今天再做就容易多了

    题意:升序给出n个珍珠的的数量和价值,问买这些珍珠的最小花费,其中可以用价值高的珍珠等量代替价值小的珍珠,并且一种价钱如果决定买,必须多买10个保底

    水dp,dp[i]表示买前i种珍珠的最小花费,枚举代替的区间

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <set>
    #include <cmath>
    
    using namespace std;
    
    int dp[105],a[105],p[105];
    
    int main(){
        int T;
        scanf("%d",&T);
        while(T--){
            int n;
            scanf("%d",&n);
            for(int i=1;i<105;i++)dp[i]=0xfffffff;
            for(int i=1;i<=n;i++)
                scanf("%d%d",&a[i],&p[i]);
               dp[1]=(a[1]+10)*p[1];
            for(int i=2;i<=n;i++){
                for(int j=1;j<=i;j++){
                    int res=dp[j-1];
                    int cnt=0;
                    for(int k=j;k<=i;k++){
                        cnt+=a[k];
                    }
                    res+=(cnt+10)*p[i];
                    dp[i]=min(dp[i],res);
                }
            }
            printf("%d
    ",dp[n]);
        }
        return 0;
    }
    View Code
  • 相关阅读:
    [UOJ#391]GEGEGE
    [GOODBYE WUXU][UOJ]
    codeforce 1110F
    [atcoder][abc123D]
    [atcoder][agc001]
    Luogu1070-道路游戏-动态规划
    Luogu 2577[ZJOI2005]午餐
    Luogu 1169 [ZJOI2007]棋盘制作
    Luogu 1273 有线电视网
    Luogu 2279 [HNOI2003]消防局的设立
  • 原文地址:https://www.cnblogs.com/xiaohongmao/p/4108749.html
Copyright © 2020-2023  润新知