题目背景

此处省略maxint+1个数

题目描述

在以后的若干天里戴维将学习美元与德国马克的汇率。编写程序帮助戴维何时应买或卖马克或美元,使他从100美元开始,最后能获得最高可能的价值。

输入输出格式

输入格式:

输入文件的第一行是一个自然数N,1≤N≤100,表示戴维学习汇率的天数。

接下来的N行中每行是一个自然数A,1≤A≤1000。第i+1行的A表示预先知道的第i+1天的平均汇率,在这一天中,戴维既能用100美元买A马克也能用A马克购买100美元。

输出格式:

输出文件的第一行也是唯一的一行应输出要求的钱数(单位为美元,保留两位小数)。

注意:考虑到实数算术运算中进位的误差,结果在正确结果0.05美元范围内的被认为是正确的,戴维必须在最后一天结束之前将他的钱都换成美元。

输入输出样例

输入样例#1:

  1. 5
  2. 400
  3. 300
  4. 500
  5. 300
  6. 250
输出样例#1:

  1. 266.66

说明

样例解释 (无需输出)

Day 1 ... changing 100.0000 美元= 400.0000 马克

Day 2 ... changing 400.0000 马克= 133.3333 美元

Day 3 ... changing 133.3333 美元= 666.6666 马克

Day 5 ... changing 666.6666 马克= 266.6666 美元

说一下我的思路:

首先我们可以推出:

美元换马克的比例式为:[(拥有的美元)*当天马克]/100

马克换美元的比例式为:(100*拥有美元)/当天马克

然后我们可以发现,当第i天的马克比第i+1天的马克多的时候是不能用马克换美元的

因为第i+1天换的美元一定比第i天多

然后初始化一下,胡乱搞搞就AC了。

虽然代码比所有题解都长吧。。。。。

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<cmath>
  5. using namespace std;
  6. void read(int & n)
  7. {
  8. char c='+';int x=;bool flag=;
  9. while(c<''||c>'')
  10. {
  11. c=getchar();
  12. if(c=='-')flag=;
  13. }
  14. while(c>=''&&c<='')
  15. x=x*+c-,c=getchar();
  16. flag==?n=-x:n=x;
  17.  
  18. }
  19. const int MAXN=;
  20. int n;
  21. double dp[MAXN][];// dp[i][0]表示第i天能获得多少马克
  22. // dp[i][1]表示第i天能获得多少美元
  23. double mark[MAXN];
  24. int main()
  25. {
  26. read(n);
  27. for(int i=;i<=n;i++)
  28. // read(mark[i]);
  29. cin>>mark[i];
  30. for(int i=;i<=n;i++)
  31. {
  32. dp[i][]=max(mark[i],dp[i-][]);
  33. dp[i][]=max(100.00,dp[i-][]);// 初始状态
  34. dp[i][]=max(dp[i][],(dp[i][]*)/mark[i]);// 马克换成美元
  35. dp[i][]=max(dp[i][],(dp[i][]*mark[i])/);
  36. if(i!=n&&mark[i+]<mark[i])continue;
  37. dp[i][]=max(dp[i][],(double)dp[i][]/mark[i]*mark[i]);
  38. dp[i][]=max(dp[i][],(dp[i][]*)/mark[i]);// 马克换成美元
  39. }
  40. double maxn=;
  41. for(int i=;i<=n;i++)
  42. {
  43. maxn=max((100.00*dp[i][])/mark[i],maxn);
  44. maxn=max(maxn,dp[i][]);
  45. }
  46. printf("%.2lf",maxn);
  47. return ;
  48. }

P1968 美元汇率的更多相关文章

  1. 洛谷P1968 美元汇率[2017年4月计划 动态规划02]

    P1968 美元汇率 题目背景 此处省略maxint+1个数 题目描述 在以后的若干天里戴维将学习美元与德国马克的汇率.编写程序帮助戴维何时应买或卖马克或美元,使他从100美元开始,最后能获得最高可能 ...

  2. 洛谷P1968 美元汇率

    题目背景 此处省略maxint+1个数 题目描述 在以后的若干天里戴维将学习美元与德国马克的汇率.编写程序帮助戴维何时应买或卖马克或美元,使他从100美元开始,最后能获得最高可能的价值. 输入输出格式 ...

  3. 洛谷——P1968 美元汇率

    https://www.luogu.org/problem/show?pid=1968#sub 题目背景 此处省略maxint+1个数 题目描述 在以后的若干天里戴维将学习美元与德国马克的汇率.编写程 ...

  4. 洛谷 p1968 美元汇率 题解

    传送门 美元由马克转化,马克由美元转化 求最大美元 每一天只有2种选择 ①:不转化另一货币 ②:转化另一货币 典型01背包 可以开一个二维数组f[100][3] F[i][1]表示前i天获得最大美元 ...

  5. P1968 美元汇率 怀疑智商超过海平面

    https://www.luogu.org/problemnew/show/P1968 也是一道贪心题,一些计算: 然而我却弄得很复杂: 既然我们要的是最后的最大值,那我们为什么要注意中间的细节呢: ...

  6. 洛谷 P1968 美元汇率

    题目传送门 解题思路: 一道很简单的DP AC代码: #include<iostream> #include<cstdio> using namespace std; int ...

  7. 洛谷1968美元汇率 dp

    P1968 美元汇率 dp 题目描述 在以后的若干天里戴维将学习美元与德国马克的汇率.编写程序帮助戴维何时应买或卖马克或美元,使他从100美元开始,最后能获得最高可能的价值. 输入输出格式 输入格式: ...

  8. 洛谷——1968 美元汇率(DP)

    题目背景 此处省略maxint+1个数 题目描述 在以后的若干天里戴维将学习美元与德国马克的汇率.编写程序帮助戴维何时应买或卖马克或美元,使他从100美元开始,最后能获得最高可能的价值. 输入输出格式 ...

  9. AC日记——美元汇率 洛谷 P1988

    题目背景 此处省略maxint+1个数 题目描述 在以后的若干天里戴维将学习美元与德国马克的汇率.编写程序帮助戴维何时应买或卖马克或美元,使他从100美元开始,最后能获得最高可能的价值. 输入输出格式 ...

随机推荐

  1. 【Codeforces 279C】Ladder

    [链接] 我是链接,点我呀:) [题意] 题意 [题解] 设pre[i]表示i往前一直递增能递增多远 设aft[i]表示i往后一直递增能递增多远 如果aft[l]+pre[r]>=(r-l+1) ...

  2. Python - 对多继承以及super的一些了解

    Python支持多继承,与C++一样都会出现一种问题:子类继承的多个父类又继承了同一个父类,这时就有可能会出现父类构造方法被调用多次的情况.关于这个问题,我找了一些资料,虽然没有亲自全部验证,这里我总 ...

  3. Redis3.0集群方案分析

    在Redis3.0集群出来之前,大家都对作者antirez寄予厚望,因为Redis从来没有让我们失望过.现在Redis3.0集群出来了,网上出了很多评论文章,都说他的功能多么强大,包括下面这张图是彻底 ...

  4. jq页面提示或者页面牵引浏览--页面的指引向导插件

    1.看看插件效果吧 2. html 文件 :index.html <!DOCTYPE html> <html lang="en"> <head> ...

  5. RAC 设置archive log模式

    首先设置 archive log的位置 SQL> alter system set log_archive_dest='+DATA/orcl/archive/'; System altered. ...

  6. spring mvc日期转换(前端到后端,后端到前端)

    在做web开发的时候,页面传入的都是String类型,SpringMVC可以对一些基本的类型进行转换,但是对于日期类的转换可能就需要我们配置. 1.如果查询类使我们自己写,那么在属性前面加上@Date ...

  7. eclipse编译项目用maven编译问题

    1.eclipse只是个ide开发环境,并没有编译器功能.没有编译器.eclipse编译项目只是调jdk本地的java编译器.maven是单独编译,eclipse可以调用maven编译, 在eclip ...

  8. PHP移动互联网开发笔记(3)——运算符

    原文地址:http://www.php100.com/html/php/rumen/2014/0326/6704.html 一.PHP的运算符 PHP中有丰富的运算符集,它们中大部分直接来自于C语言. ...

  9. Codeforces Round #263 (Div. 1)-A,B,C

    A: 这道题目还是非常easy的,做过非常多遍了.相似于分割木板的问题. 把全部的数放在一个优先队列里,弹出两个最大的,然后合并,把结果放进去.依次进行. #include <iostream& ...

  10. 让mongodb执行js文件

    环境: Linux js代码: 循环删除表中的数据: clear-mongodb-dialog.js print('=========BEGIN=========='); for(var i of [ ...