0
点赞
收藏
分享

微信扫一扫

机器人3D视觉引导半导体塑封上下料

seuleyang 2024-01-24 阅读 11
算法

题目链接

分析

首先设状态 d p x , 0 dp_{x,0} dpx,0 表示第 x x x 天持有美元的最大收益, d p x , 1 dp_{x,1} dpx,1 表示第 x x x 天持有马克的最大收益。

转移时跟昨天该种货币的最大收益和昨天另一种货币的最大收益换算成该种货币的最大收益去最大值即可,注意最后要转成美元。

代码

#include <bits/stdc++.h>
#define debug puts("Y")
#define inf INT_MAX

using namespace std;

const int N = 5 * 1e5 + 5;
int n;
double a[N], dp[N][5];

double change(int i, int ty){//ty为1表示将马克转成美元,为2表示美元转成马克
	return (ty == 1 ? dp[i - 1][1] / a[i] * 100 : dp[i - 1][0] * a[i] / 100);
}

int main() {
	cin >> n;
	for (int i = 1; i <= n; i ++) {
		cin >> a[i];
	}
	dp[1][0] = 100, dp[1][1] = a[1];
	for (int i = 2; i <= n; i ++) {
		dp[i][0] = max(dp[i - 1][0], change(i, 1));
		dp[i][1] = max(dp[i - 1][1], change(i, 2));
	}
	cout << fixed << setprecision(2) << max(dp[n][0], change(n, 1));
  return 0;
}
举报

相关推荐

0 条评论