HDU1300 Pearls(可斜率优化)
question:有几种不同的珍珠。每种珍珠都有它的单价。当然质量高的珍珠价格一定也是高的。为了避免买家只买很少的珍珠。
就要求不论是买了多少个珍珠都是需要在购买数量上加10.之后乘上单价。求出总的花费!例如:买5个单价是10的珍珠。需要
的花费是(+)*= .买100个单价是20的珍珠。需要的花费是(+)*= .总共需要的花费是150+=.
如果把珍珠的质量提高了。需要的105个珍珠都买单价是20的。也就是说都买质量好的。总的花费是(++)*= .
在两组数据看来。珍珠都买了高品质的了,而且花费也少了!问题是怎么样能花费最少买珍珠!
Add:合并肯定是相邻的合并。比如啊a<b<c的三种品质珍珠,如果把a珍珠和高品质的珍珠,肯定不会跳过b去和c合并,因为a和
b或者c合并都达到了减少数量10的目的,然而后者单价上去了。所以就成了相邻单元合并模型的DP。
对第i种珍珠
一:前n-1种按照前面的最优值购买(无后效性),第n种单独买
二:从第k种到第n种数量合并购买,其中k从1取到n
HDU1300
#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<memory.h>
#include<algorithm>
using namespace std;
int a[],c[],dp[],sum[];
int main()
{
int T,n,i,k,tmp;
scanf("%d",&T);
while(T--){
scanf("%d",&n);
memset(dp,,sizeof(dp));
for(i=;i<=n;i++) {
scanf("%d%d",&a[i],&c[i]);
sum[i]=sum[i-]+a[i];
}
for(i=;i<=n;i++){
dp[i]=dp[i-]+(a[i]+)*c[i];
for(k=;k<i;k++){
tmp=dp[k-]+(sum[i]-sum[k-]+)*c[i];
if(dp[i]>tmp) dp[i]=tmp;
}
}
printf("%d\n",dp[n]);
}
return ;
}
HDU1300 Pearls(可斜率优化)的更多相关文章
- HDU1300 Pearls —— 斜率优化DP
题目链接:https://vjudge.net/problem/HDU-1300 Pearls Time Limit: 2000/1000 MS (Java/Others) Memory Lim ...
- poj 1260 Pearls 斜率优化dp
这个题目数据量很小,但是满足斜率优化的条件,可以用斜率优化dp来做. 要注意的地方,0也是一个决策点. #include <iostream> #include <cstdio> ...
- HDOJ 1300 Pearls 斜率优化dp
原题连接:http://acm.hdu.edu.cn/showproblem.php?pid=1300 题意: 题目太长了..自己看吧 题解: 看懂题目,就会发现这是个傻逼dp题,斜率优化一下就好 代 ...
- 【转】斜率优化DP和四边形不等式优化DP整理
(自己的理解:首先考虑单调队列,不行时考虑斜率,再不行就考虑不等式什么的东西) 当dp的状态转移方程dp[i]的状态i需要从前面(0~i-1)个状态找出最优子决策做转移时 我们常常需要双重循环 (一重 ...
- BZOJ 1597: [Usaco2008 Mar]土地购买 [斜率优化DP]
1597: [Usaco2008 Mar]土地购买 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4026 Solved: 1473[Submit] ...
- [斜率优化DP]【学习笔记】【更新中】
参考资料: 1.元旦集训的课件已经很好了 http://files.cnblogs.com/files/candy99/dp.pdf 2.http://www.cnblogs.com/MashiroS ...
- BZOJ 1010: [HNOI2008]玩具装箱toy [DP 斜率优化]
1010: [HNOI2008]玩具装箱toy Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 9812 Solved: 3978[Submit][St ...
- 单调队列 && 斜率优化dp 专题
首先得讲一下单调队列,顾名思义,单调队列就是队列中的每个元素具有单调性,如果是单调递增队列,那么每个元素都是单调递增的,反正,亦然. 那么如何对单调队列进行操作呢? 是这样的:对于单调队列而言,队首和 ...
- 【BZOJ2442】 [Usaco2011 Open]修剪草坪 斜率优化DP
第一次斜率优化. 大致有两种思路: 1.f[i]表示第i个不选的最优情况(最小损失和)f[i]=f[j]+e[i] 显然n^2会T,但是可以发现f的移动情况可以用之前单调队列优化,就优化成O(n)的了 ...
- bzoj-4518 4518: [Sdoi2016]征途(斜率优化dp)
题目链接: 4518: [Sdoi2016]征途 Description Pine开始了从S地到T地的征途. 从S地到T地的路可以划分成n段,相邻两段路的分界点设有休息站. Pine计划用m天到达T地 ...
随机推荐
- 牛客国庆集训派对Day1 Solution
A Tobaku Mokushiroku Kaiji 水. #include <bits/stdc++.h> using namespace std; ], b[]; void Ru ...
- poj1177 Picture 矩形周长并
地址:http://poj.org/problem?id=1177 题目: Picture Time Limit: 2000MS Memory Limit: 10000K Total Submis ...
- 【android】ViewPager 大量内容页的内存优化
总结:使用FragmentStatePagerAdapter 代替 FragmentPagerAdapter作为大批量内容页的适配器. 详细: 最近App里有一个场景,类似猿题库做题那种:有很多个题目 ...
- 服务器环境配置nginx / php / php-fpm(一)
登陆,升级应用,查询和关闭selinux yum update getenforce setenforce 0 vi /etc/selinux 添加非root用户 adduser deploy pas ...
- 微信JS支付代码_前端调用微信支付接口
转自:http://dditblog.com/itshare_553.html 跟大家分享一段微信支付的js代码片段.V3版的微信支付没有paySignKey参数.基本上是直接复制就可以使用了.改一改 ...
- TED #05# How we can face the future without fear, together
Rabbi Lord Jonathan Sacks: How we can face the future without fear, together 1. what was it like bei ...
- 《Java入门第二季》第五章 阶段练习
/** * ┏┓ ┏┓ * ┏┛┻━━━┛┻┓ * ┃ ┃ * ┃ ━ ┃ * ┃ > < ┃ * ┃ ┃ * ┃... ⌒ ... ┃ * ┃ ┃ * ┗━┓ ┏━┛ * ┃ ┃ Cod ...
- android的hook方面知识点
android hook分为另种: native层hook---理解ELF文件 java层---虚拟机特性和Java上的反射的作用 注入代码: 存放在哪? 用mmap函数分配临时内存来完成代码存放,对 ...
- IMX6Q GPIO定义
ret = gpio_request_array(mx6q_sabresd_flexcan_gpios, ARRAY_SIZE(mx6q_sabresd_ ...
- 使用JavaScript下载csv文件
前端可以使用JavaScript在客户端下载包含页面数据的文件,这里以下载CSV格式文件为例,代码如下: function downloadData(data, filename, type) { v ...