zoukankan      html  css  js  c++  java
  • hdu 1300 Pearls(DP)

    题意:

    有N种【价格从低到高】珍珠,每种珍珠有一个价格。每种珍珠有一个需要的个数。

    如果你决定买某种珍珠x个,则需要额外多买10个。【防止游客购买少量】

    你可以把低价格的珍珠换成高价格的珍珠,但不允许把高价格的珍珠换成低价格的珍珠。

    问总共最少需要花多少钱。

    思路:

    假设第 i 种珍珠需要X个。可以知道要么这X个用这个价格买,要么就归到更高价格的珍珠里去买。【想想就明白了】

    也就是,有的珍珠0个,有的珍珠好多。也就是某个珍珠种类的前k种珍珠都归到这个珍珠种类去买。

    DP结构出来了。

    dp[i]:前 i 种珍珠,第 i 种珍珠要买若干个所花的最少钱是多少。

    dp[i]=max( dp[i],dp[j]+(sum[i]-sum[j-1]+10)*p[i] )

    代码:

    int n;
    int sum[105], num[105], p[105];
    int dp[105];
    
    
    int main(){
    
        int T;
        cin>>T;
        while(T--){
            scanf("%d",&n);
            sum[0]=0;
            rep(i,1,n){
                scanf("%d%d",&num[i],&p[i]);
                sum[i]=sum[i-1]+num[i];
            }
    
            mem(dp,inf);
    
            dp[0]=0;
            rep(i,1,n){
                rep(j,0,i-1){
                    dp[i]=min( dp[i],dp[j]+(sum[i]-sum[j]+10)*p[i] );
                }
            }
            printf("%d
    ",dp[n]);
        }
    
        return 0;
    }
  • 相关阅读:
    HDU 2196 Computer
    HDU 1520 Anniversary party
    POJ 1217 FOUR QUARTERS
    POJ 2184 Cow Exhibition
    HDU 2639 Bone Collector II
    POJ 3181 Dollar Dayz
    POJ 1787 Charlie's Change
    POJ 2063 Investment
    HDU 1114 Piggy-Bank
    Lca hdu 2874 Connections between cities
  • 原文地址:https://www.cnblogs.com/fish7/p/4334682.html
Copyright © 2011-2022 走看看