zoukankan      html  css  js  c++  java
  • [luogu1968]美元汇率(dp)

    1063: [视频]动态规划入门(一维一边推1:美元和马克)

    时间限制: 1 Sec  内存限制: 128 MB
    提交: 1332  解决: 934
    [提交] [状态] [讨论版] [命题人:admin]

    题目描述

    【题意】
    今天6:00起床,我转身发现枕头边有100美元。
    出门的时候发现门口有家冰淇淋店,拉了很长的横幅:“今天100美元和400马克互换”
    第二天的横幅是:“今天100美元和300马克互换”
    第三天的横幅是:“今天100美元和500马克互换”
    第四天的横幅是:“今天100美元和300马克互换”
    第五天的横幅是:“今天100美元和250马克互换”

    第五天的晚上,我灵光一闪,决定坐时光飞机回到第一天的上午6:00,准备发大财!
    我是这么做的:
    Day 1 ... 用 100.0000 美元 换 400.0000 马克
    晚上我手里拿着400.0000马克安心睡觉了

    Day 2 ... 用 400.0000 马克 换 133.3333 美元
    晚上我手里拿着133.3333美元安心睡觉了

    Day 3 ... 用 133.3333 美元 换 666.6666 马克
    晚上我手里拿着666.6666马克安心睡觉了

    Day 4 ... 我手里拿着666.6666 马克 不换美元,因为我知道明天换更好呀
    晚上我手里拿着666.6666马克安心睡觉了

    Day 5 ... 用 666.6666 马克 换 266.6666 美元
    晚上我手里拿着266.6666美元偷笑,我赚了166.6666美元。厉害吧?你有时光机吗?

    第六天全世界都不使用马克了,所以最后一天留在手里的必须是美元!

    【输入格式】
    第一行是一个自然数N,1≤N≤100,表示天数。
    接下来的N行中每行是一个自然数a[i],1≤a[i]≤1000。
    表示预先知道的第i天100美元 和 A马克 能互换。
     
    【输出格式】
    一行,即最后一天晚上手里的美元数目(保留两位小数)。

    【样例输入】
    5
    400
    300
    500
    300
    250
    【样例输出】
    266.67
    【提示】
    感受隐形路径

    解题报告

    (思路代码简单到不想报告:|

    原谅我从前丑丑的码风叭QAQ

    #include<bits/stdc++.h>
    using namespace std;
    const int N=1000;
    double a[N],d[N],m[N];
    int n;
    int main()
    {
      scanf("%d",&n);
      for(int i=1;i<=n;i++)cin>>a[i];
      d[1]=100;m[1]=a[1];
      for(int i=2;i<=n;i++){
          d[i]=max(d[i-1],m[i-1]*100.0/a[i]);
          m[i]=max(m[i-1],d[i-1]*a[i]/100.0);
      }
      printf("%.2f",d[n]);
    }
     
    满堂花醉三千客,一剑霜寒十四州
  • 相关阅读:
    linux下ipc
    c各种打印集合
    linux环境下,利用gsoap生成webservice客户端进行应用程序开发的小结 (轉)
    Linux C函数之错误处理函数
    Linux操作系统文件系统基础知识详解
    常用字符串操作函数
    ASP.NET偷懒大法二
    ASP.NET偷懒大法三 (利用Attribute特性简化多查询条件拼接sql语句的麻烦)
    用JavaScript获取Asp.net服务器端控件CheckBoxList的选中值数组
    ASP.NET偷懒大法四(动态生成表单对象)
  • 原文地址:https://www.cnblogs.com/phemiku/p/11420929.html
Copyright © 2011-2022 走看看