poj 1260 Pearls (dp)
来源:互联网 发布:sql查询前10条记录 编辑:程序博客网 时间:2024/05/29 23:23
题意:不同等级的宝石,每个等级买了后等要额外付出10枚的钱,每一档可以买更高档的来代替,问全部宝石一共最少可花多少钱。
思路:一开始想的是贪心,然后发现不行;(别问为什么,你自己举个例子就会知道的);
f[i] = min{f[k] + (a[k+1] + a[k+2] ... +a[i] + 10) * p[i];
a[i]表示第i个class要买的数目
p[i]表示第i个class的单个价格
f[i]表示买到第i个时付的最少的钱(第i个一定要买)
代码:
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <queue>using namespace std;const int MAXN = 108;struct thing { int a, p;} fuck[MAXN];int dp[MAXN];int cmp(thing aa, thing bb) { return aa.p < bb.p;}int main() { int t, c, i, j; scanf("%d", &t); while(t--) { scanf("%d", &c); for(i = 1; i <= c; i++) { scanf("%d%d", &fuck[i].a, &fuck[i].p); } //之前看见贪心错了,加了这个(不能加,加了就错,数据有点问题) //sort(fuck+1, fuck+c+1, cmp); for(i = 1; i <= c; i++) { int tmp = fuck[i].a+10; dp[i] = dp[i-1]+tmp*fuck[i].p; for(j = i-1; j > 0; j--) { tmp += fuck[j].a; if (dp[i] > dp[j-1]+tmp*fuck[i].p) dp[i] = dp[j-1]+tmp*fuck[i].p; } } printf("%d\n", dp[c]); } return 0;}
0 0
- 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 1260Pearls(DP)
- poj 1260 Pearls (DP)
- poj 1260 Pearls(DP)
- poj 1260 Pearls (dp)
- 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)
- Todo List
- 原生JS实现split()
- [kuangbin带你飞]专题十一 网络流 C POJ
- IMWeb训练营作业之todo
- Git上传代码到Coding,下载代码到本地步骤
- poj 1260 Pearls (dp)
- Unity5.3.5f1 与 VS2013 环境搭建配置
- Shiro简介
- ExpandableListView的使用以及更换前边的图片
- Mac搭建github-Page的Hexo免费个人博客
- 折线分割平面hdu2050
- 动态规划练习--19(最低通行费)
- Ubuntu 安装 JDK 7 / JDK8 的两种方式
- hexo + github pages 搭建个人博客