POJ 1260 DP

原创 2015年11月21日 15:56:01

Pearls
Time Limit: 1000MS Memory Limit: 10000K
Total Submissions: 8068 Accepted: 4025

Description

In Pearlania everybody is fond of pearls. One company, called The Royal Pearl, produces a lot of jewelry with pearls in it. The Royal Pearl has its name because it delivers to the royal family of Pearlania. But it also produces bracelets and necklaces for ordinary people. Of course the quality of the pearls for these people is much lower then the quality of pearls for the royal family.In Pearlania pearls are separated into 100 different quality classes. A quality class is identified by the price for one single pearl in that quality class. This price is unique for that quality class and the price is always higher then the price for a pearl in a lower quality class.
Every month the stock manager of The Royal Pearl prepares a list with the number of pearls needed in each quality class. The pearls are bought on the local pearl market. Each quality class has its own price per pearl, but for every complete deal in a certain quality class one has to pay an extra amount of money equal to ten pearls in that class. This is to prevent tourists from buying just one pearl.
Also The Royal Pearl is suffering from the slow-down of the global economy. Therefore the company needs to be more efficient. The CFO (chief financial officer) has discovered that he can sometimes save money by buying pearls in a higher quality class than is actually needed.No customer will blame The Royal Pearl for putting better pearls in the bracelets, as long as the
prices remain the same.
For example 5 pearls are needed in the 10 Euro category and 100 pearls are needed in the 20 Euro category. That will normally cost: (5+10)*10+(100+10)*20 = 2350 Euro.Buying all 105 pearls in the 20 Euro category only costs: (5+100+10)*20 = 2300 Euro.
The problem is that it requires a lot of computing work before the CFO knows how many pearls can best be bought in a higher quality class. You are asked to help The Royal Pearl with a computer program.

Given a list with the number of pearls and the price per pearl in different quality classes, give the lowest possible price needed to buy everything on the list. Pearls can be bought in the requested,or in a higher quality class, but not in a lower one.

Input

The first line of the input contains the number of test cases. Each test case starts with a line containing the number of categories c (1<=c<=100). Then, c lines follow, each with two numbers ai and pi. The first of these numbers is the number of pearls ai needed in a class (1 <= ai <= 1000).
The second number is the price per pearl pi in that class (1 <= pi <= 1000). The qualities of the classes (and so the prices) are given in ascending order. All numbers in the input are integers.

Output

For each test case a single line containing a single number: the lowest possible price needed to buy everything on the list.

Sample Input

2
2
100 1
100 2
3
1 10
1 11
100 12
Sample Output

330
1344
题意:
给许多种的珍珠的一个清单,每一种珍珠有个数和价格,必须要买清单上那么多个数的珍珠,买n个D第i种珍珠的付款方式为(n+10)*p[i],但是可以用单价比低价高的珍珠替换单价比较低的珍珠。求使得满足购买个数的最少付款钱数。
解法:
dp[i]是挑选完前i种后所付出最少的价格。在推dp[i]时,前几种珍珠用第i总取代。dp[i]初始为dp[i-1]+(a[i]+10)*p[i].让后从这些中找一个最小的赋值给dp[i]

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#define F(i,a,b) for(int i = a;i<=b;i++)

using namespace std;

int a[200];
int p[200];
int sum[200];
int dp[200];

int main(){
    int N;
    scanf("%d",&N);
    while(N--){
        int n;
        scanf("%d",&n);
        sum[0] = 0;
        F(i,1,n){
            scanf("%d%d",&a[i],&p[i]);
            sum[i] = sum[i-1] + a[i];
        }

        dp[0] = 0;
        F(i,1,n){
            dp[i] = dp[i-1] + (a[i] + 10)*p[i];
            F(j,0,i-1){
                dp[i] = min(dp[i],dp[j]+(sum[i]-sum[j]+10)*p[i]);
            }
        }
        printf("%d\n",dp[n]);
    }

    return 0;
}

版权声明:博客迁移到 yaokun.wiki

poj 1260 dp

poj 1260Pearls 大致题意:现在有很多按品质升序排列,当然价格也是,的不同种类的珠宝。为防止只够买一个,顾客需要买所需个数再额外加10个。也可以将这些珠宝升级品质,看是否可以省钱,问你买...
  • mars_ch
  • mars_ch
  • 2016年03月05日 23:15
  • 336

[DP]poj1260

题意: 给出珠宝的数量和价格,但是支付的金额应该是没一种(a+10)*p的价格,也就是必须多支付10个的价格,那么低价的可以向高价格的合并,那么比如a b两类 就可以(a+b+10)*pb 因为有可...

POJ 1260:Pearls 珍珠DP

Pearls Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 7947   Accepte...

POJ 1260-Pearls(DP)

Description In Pearlania everybody is fond of pearls. One company, called The Royal Pearl, produces...

poj 1260(购买且是最后一个购买的dp问题)

Pearls Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 6786   Accepted: 3317 ...

poj1260——Pearls(dp)

DescriptionIn Pearlania everybody is fond of pearls. One company, called The Royal Pearl, produces a...

POJ 1260 Pearls ACM解题报告(区间dp)

这题的题目好长啊,一开始也死活不理解,看了人家题解里的说明才懂了要干嘛,貌似小白上也有个类似的题,我也是不理解题目意思,现在懂了。 给你c种珍珠,每种珍珠要ai个,价格是pi,价格给你的时候就是递增...

POJ 1260 Pearls (基础DP)

做一件首饰需要若干珠宝,但是买一种珠宝需要付10个珠宝的手续费,如果我们用更好的珠宝来代替,顾客当然没有意见,所以意思就是通过买更好的珠宝来降低手续费 一道很基础的DP题,但是很容易写成贪心,第一次写...

POJ1260 Pearls(DP)

Pearls Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 9494   Accepte...

poj1260 dp

如题:http://poj.org/problem?id=1260   Pearls Time Limit: 1000MS   Memory Limit: 10000K ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:POJ 1260 DP
举报原因:
原因补充:

(最多只允许输入30个字)