zoukankan      html  css  js  c++  java
  • hdu 1300 Pearls

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

    思路:用dp[i]表示前i种花费最低的情况,则有dp[i]=min(dp[i],dp[j+1]+((sum[i]-sum[j+1]+10)*p[j])

     1 #include<iostream>  
     2 #include<cstdio>  
     3 #include<cstring> 
     4 #include <cmath> 
     5 #include<stack>
     6 #include<vector>
     7 #include<map> 
     8 #include<set>
     9 #include<queue> 
    10 #include<algorithm>  
    11 using namespace std;
    12 
    13 int a[1005],dp[1005],sum[1005],p[1005];
    14 
    15 int main()
    16 {
    17     int cas,n;
    18     scanf("%d",&cas);
    19     while(cas--)
    20     {
    21         scanf("%d",&n);
    22         for(int i=1;i<=n;i++)
    23             scanf("%d %d",&a[i],&p[i]);
    24         sum[0]=sum[n+1]=0;
    25         for(int i=n;i>=1;i--)
    26             sum[i]=sum[i+1]+a[i];
    27         dp[n+1]=0;
    28         for(int i=1;i<=n;i++)
    29             dp[i]=99999999;
    30         for(int i=n;i>=1;i--)
    31             for(int j=n;j>=i;j--)
    32                 dp[i]=min(dp[i],dp[j+1]+(sum[i]-sum[j+1]+10)*p[j]);
    33         printf("%d
    ",dp[1]);        
    34     }
    35     return 0;
    36  } 
  • 相关阅读:
    闭包
    线程与进程
    异常处理
    socket编程
    面向对象编程
    模块
    正则表达式
    递归、二分查找、冒泡算法
    装饰器
    迭代器与生成器
  • 原文地址:https://www.cnblogs.com/pter/p/5759910.html
Copyright © 2011-2022 走看看