POJ-1260 Pearls 【DP】
来源:互联网 发布:淘宝客服注意事项 编辑:程序博客网 时间:2024/05/19 14:18
题目链接
题意
某公司需采购c种珍珠,知道每种珍珠的价格和需要的量。购买时,若要买某种珍珠,需额外支付10个该种珍珠的价钱。同时价格低的珍珠可以用价格高的珍珠代替。求最少能花多少钱完成采购。
分析
解决本题关键要想到这一点:
若第i种珍珠可以被第j种珍珠代替(i< j且珍珠价格递增),则第i~j-1种珍珠都应当被第j种珍珠代替。
证明很简单,这里省略。所以最终的采购的方式就是将整个珍珠种类的区间进行划分,每个划分子区间里的珍珠都按该子区间的右端点进行采购。
由此设状态dp[i]为完成前i种珍珠的最少花费,那么转移方程:
复杂为
AC代码
//POJ-1260 Pearls//AC 2017-2-25 15:25:06//DP#include <iostream>#include <cstring>using namespace std;const int maxn=105;int T,c;int sum[maxn],p[maxn];long long dp[maxn];int main(){ cin>>T; while(T--) { cin>>c; sum[0]=0; for(int i=1;i<=c;++i) { cin>>sum[i]>>p[i]; sum[i]+=sum[i-1]; } for(int i=1;i<=c;++i) { dp[i]=(sum[i]+10)*1LL*p[i]; for(int j=1;j<i;++j) dp[i]=min(dp[i],dp[j]+(sum[i]-sum[j]+10)*1LL*p[i]); } cout<<dp[c]<<endl; } return 0;}
0 0
- POJ 1260 Pearls DP
- poj-1260-Pearls-dp
- poj 1260Pearls DP
- Pearls - POJ 1260 dp
- POJ 1260-Pearls(dp)
- poj 1260 Pearls dp
- POJ 1260 Pearls(DP)
- POJ 1260 Pearls (DP)
- poj-1260 -Pearls-DP
- POJ 1260 Pearls DP
- 【Poj 1260】 Pearls dp
- POJ-1260 Pearls (dp)
- POJ 1260 Pearls DP
- POJ 1260 Pearls DP
- POJ-1260 Pearls 【DP】
- POJ 1260 Pearls (基础DP)
- POJ - 1260 Pearls 区间dp
- POJ 1260-Pearls(DP)
- 104.Maximum Depth of Binary Tree Add to List
- Linux学习之——挂载命令
- NOIP2008解题报告(C/C++)(笨小猴)(火柴棒等式)(传纸条)(双栈排序)
- 机器学习实战第一课之k近邻算法 KNN
- MVP框架设计详解
- POJ-1260 Pearls 【DP】
- IOS 权限
- 博客前台模板
- POJ1338 Ugly Numbers 堆优化+模拟
- 【Mongoose】Mongoose增删改查
- spring的ioc与注入
- 如何访问谷歌
- 论文
- Python爬虫爬取知乎小结