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\n",dp[n]);
    }
    return 0;
}

时间: 2024-10-19 19:59:33

HDU 1300的相关文章

hdu 1300 Pearls (dp)

题目大意: 多种珍珠,每次选购都要在原有的数量上加上10. 例如:买5个单价是10的珍珠.需要的花费是(5+10)*10= 150.买100个单价是20的珍珠 需要的花费是(100+10)*20= 2200.总共需要的花费是150+2200=2350.如果把珍珠的质量提高了.需要的105个 珍珠都买单价是20的.也就是说都买质量好的.总的花费是(5+100+10)*20= 2300.在两组数据看来.珍珠都 买了高品质的了,而且花费也少了! 问题是怎么样能花费最少买珍珠! 思路分析: dp [i]

HDU 1300 Pearls--dp

题意:有不同等级的珍珠,价格不同,现在列出需要买的珍珠,求花的最少的钱(可以买高等级的来代替低等级的) 分析:dp[i]表示从最低等级到 i 等级花的最少的钱,dp[i]=min(dp[j]+v) v是从j+1到i全买i等级花的钱.需要三重循环. 代码: #include<iostream> #include<algorithm> #include<cstdio> #define INF 1000000007 using namespace std; int t,n;

hdu 1300 Pearls(dp)

Pearls Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 2018    Accepted Submission(s): 953 Problem Description In Pearlania everybody is fond of pearls. One company, called The Royal Pearl, pro

HDU 1300 Pearls

凭直觉猜测了一下,写了一个DP,居然能AC. dp[i][j]表示第i种到第n种物品都买完且最小的单价是第j种物品时候的最小总费用 #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> using namespace std; const long long INF=999999999999999; const int maxn=100+10; int T,n; long

【转】斜率优化DP和四边形不等式优化DP整理

当dp的状态转移方程dp[i]的状态i需要从前面(0~i-1)个状态找出最优子决策做转移时 我们常常需要双重循环 (一重循环跑状态 i,一重循环跑 i 的所有子状态)这样的时间复杂度是O(N^2)而 斜率优化或者四边形不等式优化后的DP 可以将时间复杂度缩减到O(N) O(N^2)可以优化到O(N) ,O(N^3)可以优化到O(N^2),依次类推 斜率优化DP和四边形不等式优化DP主要的原理就是利用斜率或者四边形不等式等数学方法 在所有要判断的子状态中迅速做出判断,所以这里的优化其实是省去了枚举

HDU 3407.Zjnu Stadium 加权并查集

Zjnu Stadium Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 3726    Accepted Submission(s): 1415 Problem Description In 12th Zhejiang College Students Games 2007, there was a new stadium built

HDU分类

模拟题, 枚举 1002 1004 1013 1015 1017 1020 1022 1029 1031 1033 1034 1035 1036 1037 1039 1042 1047 1048 1049 1050 1057 1062 1063 1064 1070 1073 1075 1082 1083 1084 1088 1106 1107 1113 1117 1119 1128 1129 1144 1148 1157 1161 1170 1172 1177 1197 1200 1201 12

(最长上升子序列 并记录过程)FatMouse&#39;s Speed -- hdu -- 1160

http://acm.hdu.edu.cn/showproblem.php?pid=1160 FatMouse's Speed Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 12338    Accepted Submission(s): 5405Special Judge Problem Description FatMouse be

HDU 1160 FatMouse&#39;s Speed (动规+最长递减子序列)

FatMouse's Speed Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 9174    Accepted Submission(s): 4061 Special Judge Problem Description FatMouse believes that the fatter a mouse is, the faster