博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
洛谷P1968 美元汇率[2017年4月计划 动态规划02]
阅读量:4658 次
发布时间:2019-06-09

本文共 1799 字,大约阅读时间需要 5 分钟。

P1968 美元汇率

题目背景

此处省略maxint+1个数

题目描述

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

输入输出格式

输入格式:

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

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

输出格式:

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

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

输入输出样例

输入样例#1:
5400300500300250
输出样例#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 美元

 

题解“

max1[i]表示第i天最多多少美元,max2[i]表示第i天最多多少马克

max1[i] = std::max(max1[i-1], max2[i-1]/rate * 100)

max2[i] = std::max(max2[i-1], max1[i-1] / 100 * rate)

滚动起来:

max1 = std::max(max1, max2/rate * 100)

max2 = std::max(max2, max1 / 100 * rate)

显然:max1 >= max2/rate * 100 → max1 * rate > max2 * 100 时 max1 = max2/rate * 100

        max2 >= max1 / 100 * rate →max1 * rate< max2 * 100 时 max1 / 100 * rate

        二者不会同时成立!

优化:if(max1 >= max2 * 100 / rate)max2 = max1/100 * rate;

        else max1 = max2 * 100 / rate;

最终答案是max1.

#include 
#include
#include
#include
#include
inline int read(){ int x = 0;char ch = getchar();char c = ch; while(ch > '9' || ch < '0')c = ch,ch = getchar(); while(ch <= '9' && ch >= '0')x = x * 10 + ch - '0',ch = getchar(); if(c == '-')return -1 * x; return x;}const int INF = 0x3f3f3f3f;int day;double max1,max2; int main(){ day = read(); max1 = 100;max2 = 0; for(int i = 1;i <= day;i ++) { int rate = read(); if(max1 >= max2 * 100 / rate)max2 = max1/100 * rate; else max1 = max2 * 100 / rate; } printf("%.2lf", max1); return 0;}

 

 

转载于:https://www.cnblogs.com/huibixiaoxing/p/6723327.html

你可能感兴趣的文章
Vertex shader Attributes
查看>>
7.10 函数的嵌套 名称空间 作用域
查看>>
Google JavaScript 编码规范指南
查看>>
hdu 4405 概率dp
查看>>
欧拉函数模板
查看>>
寒武纪C++日常实习生面经(其他人面试题)
查看>>
ECShop后台管理菜单显示、隐藏、修改、增加
查看>>
ubuntu18(笔记本) faster-rcnn实例程序运行
查看>>
dos其他
查看>>
elisp 错误提示
查看>>
Git使用及关联远程仓库
查看>>
STC-51开发板-单片机控制数码管&按键&点阵综合操作
查看>>
区块链采集
查看>>
工厂模式
查看>>
codeforces 983A Finite or not?判断进制有限表示
查看>>
linux常用命令
查看>>
转:过滤器Filter配置总结
查看>>
python学习——读取染色体长度(七:读取fasta文件)
查看>>
java学习——集合框架(泛型,Map)
查看>>
MATLAB之画确定区域内互不接触的球
查看>>