Author: loop3r
Date: 20250916
tag: 反悔贪心
link: https://codeforces.com/problemset/problem/865/D问题描述
分析
考虑当
- 如果在第
天买入,在第 天卖出,利润为 。 - 如果在第
天买入,在第 天卖出,利润为 。
贪心策略:如果当天有利可图则卖出,同时买入当天的股票,等候后面上涨时卖出。有
参考代码
cpp
#include <bits/stdc++.h>
using namespace std;
const int N = 3e5 + 10;
int n, p[N];
int main() {
cin >> n;
for (int i = 1; i <= n; i++) cin >> p[i];
priority_queue<int, vector<int>, greater<int>> q;
long long ans = 0;
for (int i = 1; i <= n; i++) {
if (q.size() && q.top() < p[i]) {
ans += p[i] - q.top();
q.pop();
q.push(p[i]);
}
q.push(p[i]);
}
cout << ans << endl;
return 0;
}