POJ 1260 Pearls
2017-02-01 15:29
204 查看
http://poj.org/problem?id=1260
题意:给出几类珍珠,以及它们要买的数量和单价,珍珠的质量依次上升,价格也依次上升,计算买所有珍珠需要花的最少价格。
购买规则是这样的,不管买哪一类的珍珠,最后都需要增加10个该类珍珠,并且质量低的珍珠可以用质量高的珍珠来代替。
举个例子吧:
100 1
100 2
如果正常买的话,就是(100+10)*1+(100+10)*2=330元,如果把第一类珍珠都按照第二类珍珠来买的话,需要(200+10)*2=440元。
思路:题意的要求主要是两点:
①购买的珍珠数量必须等于各类珍珠所要求数量的总和。
②珍珠的质量只可高,不可低。
动态规划思路是这样的:
我们依次一类类的来分析,用dp[i]来表示分析到第i类珍珠时所需要花的最少价钱。
状态转移方程为dp[i]=min(dp[i] ,dp[j]+(sum[i]-sum[j]+10)*price[i] )。 //枚举j
因为质量和价格都是依次上升的,所以如果低质量的珍珠要换成高质量的珍珠,肯定优先选择高一级的珍珠来代替,因为此时珍珠的价格比后来的珍珠便宜。
所以在状态转移方程之中,sum代表珍珠总和,sum[i]代表我们分析到第i类珍珠所需要购买的珍珠总数,sum[j](0<=j<i)代表将j~i类的珍珠都用第i类珍珠来代替。
最后输出dp
。
题意:给出几类珍珠,以及它们要买的数量和单价,珍珠的质量依次上升,价格也依次上升,计算买所有珍珠需要花的最少价格。
购买规则是这样的,不管买哪一类的珍珠,最后都需要增加10个该类珍珠,并且质量低的珍珠可以用质量高的珍珠来代替。
举个例子吧:
100 1
100 2
如果正常买的话,就是(100+10)*1+(100+10)*2=330元,如果把第一类珍珠都按照第二类珍珠来买的话,需要(200+10)*2=440元。
思路:题意的要求主要是两点:
①购买的珍珠数量必须等于各类珍珠所要求数量的总和。
②珍珠的质量只可高,不可低。
动态规划思路是这样的:
我们依次一类类的来分析,用dp[i]来表示分析到第i类珍珠时所需要花的最少价钱。
状态转移方程为dp[i]=min(dp[i] ,dp[j]+(sum[i]-sum[j]+10)*price[i] )。 //枚举j
因为质量和价格都是依次上升的,所以如果低质量的珍珠要换成高质量的珍珠,肯定优先选择高一级的珍珠来代替,因为此时珍珠的价格比后来的珍珠便宜。
所以在状态转移方程之中,sum代表珍珠总和,sum[i]代表我们分析到第i类珍珠所需要购买的珍珠总数,sum[j](0<=j<i)代表将j~i类的珍珠都用第i类珍珠来代替。
最后输出dp
。
#include<iostream> #include<algorithm> using namespace std; const int maxn = 1000 + 5; int n; int num[maxn], price[maxn]; int dp[maxn]; int sum[maxn]; int main() { //freopen("D:\\txt.txt", "r", stdin); int t; cin >> t; while (t--) { cin >> n; sum[0] = 0; for (int i = 1; i <= n; i++) { cin >> num[i] >> price[i]; sum[i] = sum[i - 1] + num[i]; } dp[0] = 0; for (int i = 1; i <= n; i++) { dp[i] = (num[i] + 10)*price[i] + dp[i - 1]; //未优化之前需要花多少钱 for (int j = 0; j < i; j++) { dp[i] = min(dp[i], dp[j] + (sum[i] - sum[j] + 10)*price[i]); } } cout << dp << endl; } return 0; }
相关文章推荐
- poj 1260 Pearls 斜率优化dp
- POJ 1260 Pearls
- poj1260——pearls
- poj 1260 Pearls 【动态规划】
- POJ-1260 Pearls 【DP】
- POJ 1260--Pearls
- POJ_1260_Pearls_动态规划
- poj 1260 Pearls ( 区间dp )
- POJ 1260 Pearls
- poj 1260 Pearls
- POJ 1260:Pearls 珍珠DP
- poj1260——Pearls(dp)
- poj-1260 Pearls
- POJ 1260 Pearls
- POJ 1260 && HDU 1300 Pearls(dp)
- poj 1260 Pearls
- POJ 1260 Pearls
- POJ 1260 pearls
- POJ 1260 Pearls
- Pearls - POJ 1260 dp