传送门

 

美元由马克转化,马克由美元转化

求最大美元

 

每一天只有2种选择

①:不转化另一货币

②:转化另一货币

典型01背包

可以开一个二维数组f[100][3]

F[i][1]表示前i天获得最大美元

F[i][2]表示前i天获得最大马克

                   F[i][1]=max(f[i-1][1],f[i-1][2]/w[i]*100.000);

                   F[i][2]=max(f[i-1][2],yy*w[i]/100.000);

/100.000的目的是保证精度

这个题也要注意保证精度

最终答案当然是f[最大天数][1];

 

我们发现第一维都没用

当然也可以压维啦~

当然也要注意,因为只能由上一天转换

#include<bits/stdc++.h>
using namespace std;
int i,m;
double f[3],w[1001];
int main() {
    scanf("%d",&m);
    for(i=1; i<=m; i++) {
        scanf("%lf",&w[i]);
    }
    f[1]=100;
     for(i=1; i<=m; ++i) {
         double yy=f[1];//要写这个,不然会错
        f[1]=max(f[1],f[2]/w[i]*100.000);
        f[2]=max(f[2],yy*w[i]/100.000);//f[2]只能由上一次的f[1](即yy)转换
    }
    printf("%.2lf",f[1]);
    return 0;

}

 

相关文章:

  • 2022-03-07
  • 2021-11-12
  • 2021-09-06
  • 2021-12-07
  • 2021-07-23
  • 2021-10-15
  • 2021-11-24
  • 2021-09-25
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-09-05
  • 2022-01-16
  • 2021-06-27
相关资源
相似解决方案