zoukankan      html  css  js  c++  java
  • 【noi 2.6_2421】Exchange Rates(DP)

    题意:起始有1000元美元,给出N天美元与加拿大元的汇率。问N天内可以不停的兑换,每次兑换需要收取3%的手续费,问可以得到的最大的美元数。

    解法:直接用2个变量存第 i 天时手中是美元和加拿大元的最大数额。

    注意——不知为何计算机储存小数时会吞掉小数部分,所以保留2位小数时要用先*100后的整型存,    最后答案再输出/100.0的实数。

     1 #include<cstdio>
     2 #include<cstdlib>
     3 #include<cstring>
     4 #include<iostream>
     5 using namespace std;
     6 
     7 const int N=370;
     8 double a[N];
     9 int mmax(int x,int y)
    10 {   return x>y?x:y;   }
    11 int main()
    12 {
    13     int n;
    14     while (1)
    15     {
    16       scanf("%d",&n);
    17       if (!n) break;
    18       for (int i=1;i<=n;i++) scanf("%lf",&a[i]);
    19       int c,u,cc,uu;
    20       c=100000,u=0;
    21       for (int i=1;i<=n;i++)
    22       {
    23         cc=c,uu=u;
    24         c=mmax(c,(int)(uu*a[i]*0.97));
    25         u=mmax(u,(int)(cc/a[i]*0.97));
    26       }
    27       printf("%.2lf
    ",(double)(c/100.0));
    28     }
    29     return 0;
    30 }
  • 相关阅读:
    2017 9 26
    NOI2002 银河英雄传说(luogu p1196)
    luogu [USACO08OCT]打井Watering Hole
    luogu P2784 化学1(chem1)- 化学合成
    2017 9 24
    2017.9.24 noip模拟赛 day2—组合数
    Java 接口——2
    Java 接口——1
    Java 泛型
    Java 随笔——8
  • 原文地址:https://www.cnblogs.com/konjak/p/5943606.html
Copyright © 2011-2022 走看看