luogu 1968 美元汇率
https://www.luogu.org/problemnew/show/P1968
定义二维数组f[ ][ ],f[i][1]表示在第i天将马克变为美元,f[i][2]表示在第i天将美元变为马克。
每天有买和不买两种选择:
所以转移方程为:
dp[i][1]=fmax(dp[i-1][1],(dp[i-1][2]/x)*100);
dp[i][2]=fmax(dp[i-1][2],(dp[i-1][1]/100)*x);
#include <algorithm> #include <iostream> #include <cstring> #include <cstdio> #include <cmath> #define maxn int(1e2+2) #define N int(1e2+2) #define M int(3) using namespace std; int n; double dp[N][M],x; int main() { scanf("%d",&n); scanf("%lf",&x); dp[1][1]=100.0000;dp[1][2]=x; for(int i=2;i<=n;i++) { scanf("%lf",&x); dp[i][1]=fmax(dp[i-1][1],(dp[i-1][2]/x)*100); dp[i][2]=fmax(dp[i-1][2],(dp[i-1][1]/100)*x); } printf("%.2lf",max(dp[n][1],(dp[n][2]/x)*100)); }
除特别注明外,本站所有文章均为Manjusaka丶梦寒原创,转载请注明来自出处