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;
    }
  • 相关阅读:
    Luogu P1596 [USACO10OCT]湖计数Lake Counting
    Luogu P1757 通天之分组背包
    数据建模笔记1
    单纯形算法 matlab
    有效集 matlab代码
    拟牛顿 DFP matlab
    FR共轭梯度法 matlab
    整数规划
    线性规划 Matlab
    远期、期货和互换(三)
  • 原文地址:https://www.cnblogs.com/fish7/p/4334682.html
Copyright © 2011-2022 走看看