解题思路:两次买卖, 求最大区间差
注意事项:
参考代码:
#include<iostream> #include<cstring> #include<algorithm> using namespace std; const int N = 1e5 + 10; int a[N],f1[N],f2[N],t,n; int main() { cin >> t; while(t --){ memset(a, 0, sizeof a); memset(f1, -0x3f, sizeof f1); memset(f2, -0x3f, sizeof f2); cin >> n; for(int i = 1; i <=n; i ++ ) cin >> a[i]; int mi = 0x3f3f3f3f, mx = -0x3f3f3f3f; for(int i = 1; i <= n; i ++) { mi = min(mi, a[i]); f1[i] = max(f1[i-1],a[i] - mi); } for(int i = n; i >= 1; i --){ mx = max(mx,a[i]); f2[i] = max(f2[i+1],mx - a[i]); } int ans = -0x3f3f3f3f; for(int i = 1; i <= n ; i ++) ans = max(ans, f1[i] + f2[i]); cout << ans << endl; } return 0; }
0.0分
0 人评分
C语言程序设计教程(第三版)课后习题11.8 (C语言代码)浏览:816 |
C语言训练-8除不尽的数 (C语言代码)暴力解法,答案只有一个,直接输出就好了浏览:1018 |
C语言考试练习题_一元二次方程 (C语言代码)浏览:737 |
C语言程序设计教程(第三版)课后习题11.1 (C语言代码)浏览:633 |
矩阵乘法 (C++代码)浏览:1462 |
C语言程序设计教程(第三版)课后习题7.5 (C语言代码)浏览:858 |
WU-判定字符位置 (C++代码)浏览:1406 |
C语言程序设计教程(第三版)课后习题6.3 (C语言代码)浏览:660 |
核桃的数量 (C语言代码)浏览:672 |
简单的a+b (C语言代码)浏览:488 |