Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
111083 | 陈志轩 | 买卖股票的最佳时机 | C++ | 通过 | 100 | 1 MS | 2040 KB | 651 | 2023-11-18 10:11:28 |
#include<bits/stdc++.h> #define int long long using namespace std; int dp[114514][2],a[114514]; signed main(){ int n; cin>>n; for (int i = 1;i <= n;i++){ cin>>a[i]; } memset(dp,-0x7f7f7f7f,sizeof(dp)); dp[1][1] = -a[1]; dp[1][0] = 0; for (int i = 2;i <= n;i++){ dp[i][1] = -a[i]; dp[i][0] = 0; for (int j = 1;j < i;j++){ if (a[i] >= a[j]){ dp[i][0] = max(dp[i][0],dp[j][1] + a[i]); } if (a[i] <= a[j]){ dp[i][1] = max(dp[i][1],dp[j][0] - a[i]); } dp[i][0] = max(dp[i][0],dp[j][0]); dp[i][1] = max(dp[i][1],dp[j][1]); } //cout<<dp[4][1]<<'\n'; } cout<<dp[n][0]; return 0; }