【题目背景】

  小奇要开采一些矿物,它驾驶着一台带有钻头(初始能力值 w)的飞船,按既定
  路线依次飞过喵星系的 n 个星球。

【问题描述】

  星球分为 2 类:资源型和维修型。

  1. 资源型:含矿物质量 a[i],若选择开采,则得到 a[i]*p 的金钱,之后钻头
  损耗 k%,即 p=p*(1-0.01k)

  2. 维修型:维护费用 b[i],若选择维修,则支付 b[i]*p 的金钱,之后钻头修
  复 c%,即 p=p*(1+0.01c)(p 为钻头当前能力值)

  注:维修后钻头的能力值可以超过初始值
  请你帮它决策最大化这个收入

【输入格式】

  第一行 4 个整数 n,k,c,w。
  以下 n 行,每行 2 个整数 type,x。
  type 为 1 则代表其为资源型星球,x 为其矿物质含量 a[i];
  type 为 2 则代表其为维修型星球,x 为其维护费用 b[i];

【输出格式】

  输出一行一个实数(保留两位小数),表示要求的结果。

【样例输入】

  5 50 50 10
  1 10
  1 20
  2 10
  2 20
  130

【样例输出】

  375.00

【数据范围】

  对于 30%的数据 n<=100
  对于 50%的数据 n<=1000,k=100
  对于 100%的数据 n<=100000,0<=k,c,w,a[i],b[i]<=100
  保证答案不超过 10^9

【解析】

  这道题从题面就可以看出是一道动态规划的题,但有一点显然的是:前面的决策会影响后面的结果。为了消去前面的影响,我们可以从后边开始动态规划。

  设f[i]表示在第i个星球的最大收入。若当前点为资源型星球,那么如果开采就可以获得当前星球的收入,而由于耐久度会减少,前面所得到的收入要整体下降%k所以状态转移方程为f[i]=max(f[i-1],a[i]+f[i-1]*(1-0.01*k))。若当前点为维修型星球,那么同理可得:减少a[i]并让前面的收入增加%c,状态转移方程为f[i]=max(f[i-1],f[i-1]*(1+0.01*c)-a[i])。为了在状态转移时更加方便,我们可以将原来耐久度为w的钻机分解成w个耐久为一的钻机,最后给答案乘w即可。

  综上所述,状态转移方程为:

  f[i]=max(f[i-1],a[i]+f[i-1]*(1-k%))    (t[i]=1)

  f[i]=max(f[i-1],f[i-1]*(1+c%)-a[i])    (t[i]=2)

【代码】

  1. #include <bits/stdc++.h>
  2. #define N 100002
  3.  
  4. using namespace std;
  5.  
  6. int n,d[N],a[N],i;
  7. double f[N],k,c,w;
  8.  
  9. int main()
  10. {
  11. freopen("explo.in","r",stdin);
  12. freopen("explo.out","w",stdout);
  13.  
  14. cin>>n>>k>>c>>w;
  15.  
  16. for(i=;i<=n;i++) cin>>d[i]>>a[i];
  17.  
  18. for(i=n;i>=;i--){
  19. if(d[i]==) f[i]=max(f[i+],f[i+]*(-0.01*k)+a[i]);
  20. else f[i]=max(f[i+],f[i+]*(+0.01*c)-a[i]);
  21. }
  22.  
  23. f[]=f[]*w;
  24.  
  25. cout<<setprecision()<<fixed<<f[]<<endl;
  26.  
  27. return ;
  28. }

P.S. 转载自LSlzf

2.17NOIP模拟赛(by hzwer) T1 小奇挖矿的更多相关文章

  1. NOIP模拟赛(by hzwer) T1 小奇挖矿

    [题目背景] 小奇要开采一些矿物,它驾驶着一台带有钻头(初始能力值 w)的飞船,按既定 路线依次飞过喵星系的 n 个星球. [问题描述] 星球分为 2 类:资源型和维修型. 1. 资源型:含矿物质量 ...

  2. 2.17NOIP模拟赛(by hzwer) T3 小奇回地球

    [题目背景] 开学了,小奇在回地球的路上,遇到了一个棘手的问题. [问题描述] 简单来说,它要从标号为 1 的星球到标号为 n 的星球,某一些星球之间有航线. 由于超时空隧道的存在,从一个星球到另一个 ...

  3. 2.17NOIP模拟赛(by hzwer) T2 小奇的序列

    [题目背景] 小奇总是在数学课上思考奇怪的问题. [问题描述] 给定一个长度为 n 的数列,以及 m 次询问,每次给出三个数 l,r 和 P, 询问 (a[l'] + a[l'+1] + ... + ...

  4. NOIP模拟赛(by hzwer) T3 小奇回地球

    [题目背景] 开学了,小奇在回地球的路上,遇到了一个棘手的问题. [问题描述] 简单来说,它要从标号为 1 的星球到标号为 n 的星球,某一些星球之间有航线. 由于超时空隧道的存在,从一个星球到另一个 ...

  5. NOIP模拟赛(by hzwer) T2 小奇的序列

    [题目背景] 小奇总是在数学课上思考奇怪的问题. [问题描述] 给定一个长度为 n 的数列,以及 m 次询问,每次给出三个数 l,r 和 P, 询问 (a[l'] + a[l'+1] + ... + ...

  6. NOIP模拟赛 经营与开发 小奇挖矿

    [题目描述] 4X概念体系,是指在PC战略游戏中一种相当普及和成熟的系统概念,得名自4个同样以“EX”为开头的英语单词. eXplore(探索) eXpand(拓张与发展) eXploit(经营与开发 ...

  7. NOIP模拟赛 by hzwer

    2015年10月04日NOIP模拟赛 by hzwer    (这是小奇=> 小奇挖矿2(mining) [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿 ...

  8. 2015-9-13 NOIP模拟赛 by hzwer

    好老的题了,但是还是很有做头的. 总结 不吸氧看来确实是没法用stl的啊(set常数太大了,开O2也没过) SPFA没认真学,觉得有堆优化Dijkstra就天下无敌了,今天负边权教我做人 于是苦逼的只 ...

  9. 【BZOJ4711】小奇挖矿 树形DP

    [BZOJ4711]小奇挖矿 Description [题目背景] 小奇在喵星系使用了无限非概率驱动的采矿机,以至于在所有星球上都采出了一些矿石,现在它准备建一些矿石仓库并把矿石运到各个仓库里. [问 ...

随机推荐

  1. 优先队列-UVA10603

    #include<cstdio> #include<cstring> #include<queue> using namespace std; typedef st ...

  2. Joomla 3.0.0 --> 3.4.6-RCE复现

    Joomla是一款网站管理系统CMS,最近曝出其3.00-3.4.6的joomla版本存在一个RCE漏洞. 并且大佬已将exp放在了github上,下载地址:https://www.exploit-d ...

  3. 07-SV线程以及线程间的通信

    1.几种语句块的区别 (1)fork……join:块内语句以并发方式执行 (2)begin……end:块内语句以顺序方式执行 (3)fork……join_none:其块内语句执行时,父线程继续执行 ( ...

  4. 百度地图根据list经纬度算每个点到剩余点的平均距离、最远距离和最近距离

    一.使用步骤 说明:给你一大串坐标list.计算每个点到其他所有点的最近最远平均距离. 1.打开百度地图api在线demo(随便一个都行) 2.替换<script></script& ...

  5. PP: Deep clustering based on a mixture of autoencoders

    Problem: clustering A clustering network transforms the data into another space and then selects one ...

  6. vue router的嵌套使用与传值的query方式

    嵌套路由 当我们不满足与 /home这种路由,而是希望通过 /home/news和/home/message访问一些内内容 那么就需要嵌套路由了 实现嵌套路由有两个步骤: ·创建对应的子组件,并且在路 ...

  7. python 3 可迭代对象与迭代器

    1,可迭代对象 内部含有__iter__方法的对象是可迭代对象 遵循可迭代协议 dir() 检查对象含有什么方法 dir()会返回一个列表,这个列表中含有该对象的以字符串的形式所有方法名.这样我们就可 ...

  8. php私有组件以及创建自己的composer私有组件(packagist+git+composer)

    1.私有组件 大多数时候我们使用的都是公开可用的开源组件,但有时候如果公司使用内部开发的PHP组件,而基于许可证和安全方面的问题不能将其开源,就需要使用私有组件.对Composer而言,这是小菜一碟. ...

  9. PHP获取小程序码并返回前端显示图片

    小程序的二维码分为小程序码和二维码: 生成小程序二维码文档中说后端来生成. 参考 小程序开发文档资料:https://developers.weixin.qq.com/miniprogram/dev/ ...

  10. 关于XXE

    NJUPT CTF2019: 做题的时候,抓包看了一下,响应XML格式消息,并没有严格过滤,这道题读文件, <!DOCTYPE foo [ <!ENTITY xxe SYSTEM &quo ...