poj1260 —— 最少的钱买完所需珍珠
2013-03-25 10:41
225 查看
c表示有多少种珍珠
ai 表示第i种珍珠所需的数量
pi 表示第i种珍珠的价钱
每买一种珍珠都需要付额外的10 * pi的钱,便宜的珍珠可以用贵的珍珠来代替,求最少的钱的总数。
简单动态规划
dp[i] 表示买完第i种珍珠之后,所花费的最少的代价,j从0到i,从j+1开始,全部由第i种代替所需的价钱+前j种所需的价钱的最小值
dp[i] = min(dp[j] + (a[j+1]+a[j+2] + ... +a[i]+10)*p[i])
ai 表示第i种珍珠所需的数量
pi 表示第i种珍珠的价钱
每买一种珍珠都需要付额外的10 * pi的钱,便宜的珍珠可以用贵的珍珠来代替,求最少的钱的总数。
简单动态规划
dp[i] 表示买完第i种珍珠之后,所花费的最少的代价,j从0到i,从j+1开始,全部由第i种代替所需的价钱+前j种所需的价钱的最小值
dp[i] = min(dp[j] + (a[j+1]+a[j+2] + ... +a[i]+10)*p[i])
#include<iostream> using namespace std; int main() { int T; cin >> T; while(T--) { int C; cin >> C; int a[1010],p[1010]; int dp[1010]; for(int i=1;i<=C;i++) cin >> a[i] >> p[i]; dp[0] = 0; for(int i=1;i<=C;i++) { dp[i] = 99999999; for(int j=0; j<=i-1; j++){ int temp = 0; for(int k=j+1; k<=i; k++) temp += a[k]; int sum = (temp + 10) * p[i] + dp[j]; if(sum < dp[i]) dp[i] = sum; } } cout << dp[C] << endl; } // system("pause"); }
相关文章推荐
- POJ 1260 不同等级珍珠组合成最便宜的购买方案 动态规划
- poj 1260 dp(买珍珠)
- POJ 1260 珍珠
- POJ 1260-Pearls(DP-买珍珠)
- POJ 1260:Pearls 珍珠DP
- POJ 1260:Pearls 珍珠DP
- poj 3251: 最少费用
- CXF开发webservice需要的最少jar包以及CXF 和 Spring集成所需jar包
- poj1260--Pearls(dp,从一开始就想错了......)
- poj解题报告——1260
- POJ 3260 The Fewest Coins 最少硬币个数(完全背包+多重背包,混合型)
- poj 1260 Pearls
- poj 2010/2110 二分应用(最少补助最大得分/二分+dfs)
- POJ 3177--Redundant Paths【无向图添加最少的边成为边双连通图 && tarjan求ebc && 缩点构造缩点树】
- 【poj1260】 Pearls
- POJ 1328 Radar Installation 贪心最少区间问题
- poj 1260 Pearls dp
- poj-1260-Pearls
- POJ1260--Pearls
- POJ_1260_Pearls_动态规划