2389: Occult的卡片升级计划

Description

Occult喜欢玩一款手游,手游中有很多好看的卡片。他想要升级这些卡。

现在他有m块经验石,目标是强化一张卡片,卡片最开始的时候是0级,卡片会升级,而升级所需的经验会越来越多。

假设卡片满级是n级,给出a[1],a[2]....a[n],a[i]表示从i-1级升到i级所需的经验石数量。保证a[1]+a[2]+...+a[n]=m,且a[1]<=a[2]<=..<=a[n]。

然而每次强化是要付钱的,并且每次加的经验石的数量是有限的,最多为10个。

每一次强化要付的金钱等于这一次加的经验石的数量乘上当前卡片的等级。

Occult想知道要把这张卡片从0级升到满级最少需要支付多少金钱。

例如输入:

2 15

5 10

表示卡片满级是2级,现在有15块经验石。第0级升到第1级所需的经验石数量是5个,第1级升到第2级所需的经验石数量是10个。

我们可以采取以下升级策略,使得支付的金钱最少:

[第一次强化]

加4个经验石。这次强化的费用:0级×4个石头=0元。强化之后升到了0级。

[第二次强化]

加10个经验石。这次强化的费用:0级×10个石头=0元。强化之后升到了1级。

[第三次强化]

加1个经验石。这次强化的费用:1级×1个石头=1元。强化之后升到了2级。

强化完毕,把三次的花费加起来,是1元。

Input

多组测试数据。

每组测试数据第一行输入n,m。(0<n<=m<=100000)

第二行输入n个整数a[1],a[2]......,a[n]。

保证a[1]+a[2]+...+a[n]=m,且a[1]<=a[2]<=..<=a[n]。

Output

对于每组测试数据,输出卡片从0级升到满级需要支付的最少金钱。

Sample Input

2 15
5 10

Sample Output

1

______________________________________________________________________________________________________________________

我们要考虑当升级第i张卡片时它的最小花费为从i-10到i-1之间的卡片花费加上这次升级的花费其中的最小值;
即  s[i]=min(s[i-1]+k[i-1]*1,s[i-2]+k[i-2]*2,……,s[i-10]+k[i-10]*10])数组k表示用k快经验石后的等级。
根据这个关系容易写出代码



#include <iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
using namespace std;
int min(int a, int b)
{
return (a < b) ? a : b; }
int main()
{
int m, n, a[100005], cnt, tot, sum;
long long int s[100005], mn, k[100005], j;
while (~scanf("%d%d", &n, &m))
{ for (int i = 1; i <= n; i++)
scanf("%d", &a[i]);
cnt = 0;
tot = 2;
sum = a[1];
memset(k, 0, sizeof(k));
for (int i = 0; i <= m; i++)
{
if (i>=sum)
{
cnt++;
sum += a[tot++];
}
k[i] += cnt;
}
s[0] = 0;
for (int i = 1; i <= m; i++)
{
mn = s[i - 1] + k[i - 1];
for (j = 1; j <= 10; j++)
{
if (j>i)
break;
mn = min(mn, s[i - j] + k[i - j] * j);
}
s[i] = mn;
}
printf("%lld\n", s[m]);
}
return 0;
}


ZUFE2389: Occult的卡片升级计划(DP) 2016-05-17 23:12 113人阅读 评论(0) 收藏的更多相关文章

  1. hdu 1231, dp ,maximum consecutive sum of integers, find the boundaries, possibly all negative, C++ 分类: hdoj 2015-07-12 03:24 87人阅读 评论(0) 收藏

    the algorithm of three version below is essentially the same, namely, Kadane's algorithm, which is o ...

  2. HDU1506(单调栈或者DP) 分类: 数据结构 2015-07-07 23:23 2人阅读 评论(0) 收藏

    Largest Rectangle in a Histogram Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 ...

  3. 悼念512汶川大地震遇难同胞――珍惜现在,感恩生活 分类: dp 2015-05-21 10:50 14人阅读 评论(0) 收藏

    Description 急!灾区的食物依然短缺! 为了挽救灾区同胞的生命,心系灾区同胞的你准备自己采购一些粮食支援灾区,现在假设你一共有资金n元,而市场有m种大米,每种大米都是袋装产品,其价格不等,并 ...

  4. hdu3853 LOOPS(概率dp) 2016-05-26 17:37 89人阅读 评论(0) 收藏

    LOOPS Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 125536/65536 K (Java/Others) Total Su ...

  5. Hdu2102 A计划 2017-01-18 14:40 60人阅读 评论(0) 收藏

    A计划 Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submissio ...

  6. HDU1078 FatMouse and Cheese(DFS+DP) 2016-07-24 14:05 70人阅读 评论(0) 收藏

    FatMouse and Cheese Problem Description FatMouse has stored some cheese in a city. The city can be c ...

  7. Max Sum—hdu1003(简单DP) 标签: dp 2016-05-05 20:51 92人阅读 评论(0)

    Max Sum Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  8. Murano Weekly Meeting 2016.05.17

    Meeting time: 2016.May.17 1:00~2:00 Chairperson:  Kirill Zaitsev, from Mirantis Meeting summary:   1 ...

  9. 2016/05/17 thinkphp3.2.2 分页的使用:①在Home下设置Publics文件夹或在thinkPHP下library的vender 把page.class.php 考贝进入 ②通过new 实例化方式调用 $page=new \Home\Publics\Page($total,3);

    注意分页的方法有两种:一种是thinkphp3.2 自带的   另一种是之前新闻页用过的     显示效果稍有差别 显示效果: 细节问题: ①搜索页面  要加session判断   和  分页 ②修改 ...

随机推荐

  1. 2018 Jar_Feb_Newwords

    检测钩子程序 开发一个检测钩子程序的工具 - 豆丁网http://www.docin.com/p-1363993661.html pdf掺杂病毒的方法 Java的:xml文件中跳过的二进制数据在解析 ...

  2. 脱离SVN的控制

    在桌面创建一个记事本文件,然后吧这句话复制进去for /r . %%a in (.) do @if exist "%%a\.svn" rd /s /q "%%a\.svn ...

  3. lrzsz的安装与配置

    1)下载http://freshmeat.sourceforge.net/projects/lrzsz/ 2)tar zxvf lrzsz-0.12.20.tar.gz 3)mv lrzsz-0.12 ...

  4. Docker Dockerfile 定制镜像(转)

    转自: https://yeasy.gitbooks.io/docker_practice/ 及 https://blog.csdn.net/wo18237095579/article/details ...

  5. mysql允许某ip访问

    grant all on *.* to databaseName@'ipAddress' identified by 'somePassword'; flush privileges;

  6. Windows内置系统账户:Local system/Network service/Local Service 区别

    LocalSystem 账户  LocalSystem是预设的拥有本机所有权限的本地账户,这个账户跟通常的用户账户没有任何关联,也没有用户名和密码之类的凭证.这个服务账户可以打开注册表的HKEY_LO ...

  7. Dell 服务器安装方法介绍

    大家都知道dell服务器在安装windows系统时都需要有raid卡驱动的加载才可以人道服务器硬盘,下面来介绍一下dell服务器raid卡驱动的加载和系统的安装: 方法一: 使用dell服务器自带的 ...

  8. 【校招面试 之 C/C++】第13题 C++ 指针和引用的区别

    1.指针和引用的定义和性质区别: (1)指针:指针是一个变量,只不过这个变量存储的是一个地址,指向内存的一个存储单元:而引用跟原来的变量实质上是同一个东西,只不过是原变量的一个别名而已.如: int ...

  9. 84直方图最大矩形覆盖 · Largest Rectangle in Histogram

    [抄题]: Given n non-negative integers representing the histogram's bar height where the width of each ...

  10. IIS支持IPA、APK文件的下载

    IIS里MIME类型中默认是没有ipa,apk文件的,所以无法直接通过网络下载.   解决方法如下: 1.打开IIS信息服务管理器,选中自已的网站,在右边面板中找到MIME类型. 2.双击打开,点击右 ...