题目大意:

买珍珠,每买一种珍珠需要额外付出十个这种珍珠的钱,但你可以买比这种珍珠高品质的珍珠来替换它(那么就只需要那高品质付出那额外的十个珍珠的钱了,但是每个珍珠的价钱也变化了)

这是一个dp。

令dp[i]为只买前i种珍珠的最少花费钱数,

状态转移方程为dp[i] = min(dp[i],dp[j]+sum);

这里j<i, sum为j之后到i种珍珠均用第i种珍珠替换所需要的钱数;

sum是很好解决的。

那么有人问了,这个状态转移只能求第i种只替换前面连续种珍珠的情况,如果是像1和3都用第三种珍珠替换,而第二种自己买你的不就不能求了。也就是说如果某种珍珠需要替换前面不连续的几种的话怎么办呢?

现在我们来证明那种情况是不存在的。

我们设每种的价格为xi,每种需要买的个数为ni,每买一种需要额外付出的钱数为ci。

情况一为1,3种珍珠一起买,2珍珠单独买;

那么需要(n1+n3+10)*x3+(n2+10)*x2;

情况2为1,2种珍珠一起买,3珍珠单独买;

则需要(n3+10)*x3+(n1+n2+10)*x2;

如果情况一比情况2学要的钱数少,列不等式可得x3<=x2。

那么2种珍珠也应该用3来替换这样显然更省钱(少付了额外十个2种珍珠的钱);

所以1用3替换那么2就肯定也用3来替换;

推广起来;

如果某一种珍珠替换了前面不连续种珍珠为最优解;

那么就说明替换的最前面珍珠的后面那些没替换的珍珠的单价大于用来替换的珍珠的单价;

那么那些没替换的替换点显然为更优解,所以被替换的珍珠必然不能是不连续的,而且要紧挨着用来替换的珍珠;

证明完毕;

上代码;

#include<iostream>
#include<string.h>
#include<stdio.h>
using namespace std;
const int maxa = ;
int sum[maxa];
int dp[maxa];
int a[maxa], b[maxa];
int main(){
int t, n;
scanf("%d", &t);
while(t--){
scanf("%d", &n);
for(int i = ; i <= n; i++){
scanf("%d%d", &a[i], &b[i]);
sum[i] = sum[i-] + a[i];
}
for(int i = ; i <= n; i++){
int mina = (<<);
for(int k = ; k < i; k++){
mina = min(mina, dp[k] +(sum[i] - sum[k]+)*b[i]);
}
dp[i] = mina;
}
printf("%d\n", dp[n]);
}
}

acm poj1260 dp的更多相关文章

  1. 【codeforces 415D】Mashmokh and ACM(普通dp)

    [codeforces 415D]Mashmokh and ACM 题意:美丽数列定义:对于数列中的每一个i都满足:arr[i+1]%arr[i]==0 输入n,k(1<=n,k<=200 ...

  2. 【转载】ACM总结——dp专辑

    感谢博主——      http://blog.csdn.net/cc_again?viewmode=list       ----------  Accagain  2014年5月15日 动态规划一 ...

  3. Codeforces Round #240 (Div. 1)B---Mashmokh and ACM(水dp)

    Mashmokh's boss, Bimokh, didn't like Mashmokh. So he fired him. Mashmokh decided to go to university ...

  4. bzoj 1030: [JSOI2007]文本生成器 (ac自己主动机上的dp)

    1030: [JSOI2007]文本生成器 Time Limit: 1 Sec  Memory Limit: 162 MB Submit: 2635  Solved: 1090 [id=1030&qu ...

  5. WOJ1022 Competition of Programming 贪心 WOJ1023 Division dp

    title: WOJ1022 Competition of Programming 贪心 date: 2020-03-19 13:43:00 categories: acm tags: [acm,wo ...

  6. 【题解】SDOI2014数数

    真的很开心呢,总算是有一道完完全全由自己做出来的题目啦~ 这一道题目洛谷P3311和另一道JSOI文本生成器的题目是十分相像的,dp方面几乎相同.只是<=n的约束,让这道题目必须结合数位dp的方 ...

  7. DP(Dynamic programming)——尽力学习之中(2016 HUAS ACM 暑假集训-5)

    这周不打算按照以往的方式更新博客,而是采用整体的方式.一是因为学的太少,没东西写:二是这篇博客会经常更新的.如题,DP——尽力学习之中. ------------------------------- ...

  8. HDU 4064 Carcassonne(插头DP)(The 36th ACM/ICPC Asia Regional Fuzhou Site —— Online Contest)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4064 Problem Description Carcassonne is a tile-based ...

  9. 2016 ACM/ICPC Asia Regional Shenyang Online 1009/HDU 5900 区间dp

    QSC and Master Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) ...

随机推荐

  1. 23个phpcms v9模板制作及二次开发常用代码案例

    0:调用最新文章,带所在版块 {pc:get sql="SELECT a.title, a.catid, b.catid, b.catname, a.url as turl ,b.url a ...

  2. Android Init进程命令的执行和服务的启动

    这里开始分析init进程中配置文件的解析,在配置文件中的命令的执行和服务的启动. 首先init是一个可执行文件,它的对应的Makfile是init/Android.mk. Android.mk定义了i ...

  3. C#实现打印与打印预览功能(转)

    在windows应用程序中文档的打印是一项非常重要的功能,在以前一直是一个非常复杂的工作,Microsoft .Net Framework的打印功能都以组件的方式提供,为程序员提供了很大的方便,但是这 ...

  4. Pycharm在创建py文件时,如何自动添加文件头注释(类似于钩子特性)?

    在每次新建一个py文件的时候 1 如何自动添加/usr/bin/env python2 自动添加 coding=utf8 操作方法: File->settings->Editor-> ...

  5. ionic中修改图标的问题

    有两种修改图标的方法,一种是手动配置,另外一种是使用命令 1.手动配置 把图标icon.png复制到resources\android\icon目录下 修改根目录的config.xml文件 <p ...

  6. Solr Update备注

    参考资料: http://wiki.apache.org/solr/ExtractingRequestHandler#Sending_documents_to_Solr /update 标准的upda ...

  7. Linux学习——粘粘今天看的东西

    由二分割表就叧有64 bytes而已,最多叧能容纳四笔分割的记录, 这四个分割的记录被称为主要(Primary)戒延伸(Extended)分割槽.分割槽的最小单位为磁柱(cylinder)请注意, 延 ...

  8. 【转】一个FAE(AE)的体会和大家交流

    原文网址:http://www.52rd.com/bbs/dispbbs.asp?boardID=63&ID=228682 本人在国内某芯片设计公司工作近5年时间岗位是AE和FAE,两个工作量 ...

  9. Vim--写在开始

    这是Vim的学习记录,结合Vim使用技巧一书.

  10. http缓存策略

    http://foofish.net/blog/95/http-cache-policy