U309964 股票
题目背景
[原题](https://codingac.com/p/P1753)
题目描述
你可以很好地预测某只股票未来$N$天的价格。你想从中获利,但每天只需要交易一股股票。也就是说,每天你要么买一股,要么卖一股,要么什么都不做。一开始你拥有零股票,当你没有股票的时候你不能出售股票。在$N$天结束时,你想再次拥有零股票,但想尽可能拥有更多的钱。
输入格式
输入以一个整数$N(2≤N≤3*10^5)$开始,即天数。
接下来的一行恰好有$N个整数,p_1,p_2,...p_n(1≤p_i≤10^6)$。$p_i$表示一股股票在第$i$天的价格。
输出格式
在$N$天结束时,输出你最终能得到的最大金额
说明/提示
在第一个例子中,以$5$和$4$的价格分别买入一股,以$9$和$12$的价格分别卖出。 然后在价格为$2$时买入一股,价格为$10$时卖出。 总利润是 $-5 - 4 + 9 + 12 - 2 + 10 = 20$。
这份代码运用的是优先队列$+$贪心$+$反悔
下面是$AC$代码
```cpp
#include
#include
using namespace std;
priority_queue jlwz;
int n;
long long ans=0;
int main()
{
cin>>n;
for(int i=1;i>k;
if(jlwz.size()&&k>jlwz.top())
{
ans+=(k-jlwz.top());
jlwz.pop();
jlwz.push(k);
}
jlwz.push(k);
}
cout