Codeforces Round #437 E. Buy Low Sell High】的更多相关文章

题意:买卖股票,给你n个数,你可以选择买进或者卖出或者什么都不做,问你最后获得的最大收益是多少. Examples Input 910 5 4 7 9 12 6 2 10 Output 20 Input 203 1 4 1 5 9 2 6 5 3 5 8 9 7 9 3 2 3 8 4 Output 41In the first example, buy a share at 5, buy another at 4, sell one at 9 and another at 12. Then b…
Codeforces Round #437 (Div. 2) codeforces 867 A. Between the Offices(水) 题意:已知白天所在地(晚上可能坐飞机飞往异地),问是否从西雅图飞到旧金山次数更多. 题解:只要判断第一天和最后一天状态即可. #include<cstdio> #include<cstring> #include<algorithm> using namespace std; ; int n; char s[N]; int ma…
[CF865D]Buy Low Sell High(贪心) 题面 洛谷 CF 题解 首先有一个\(O(n^2)\)的\(dp\)很显然,设\(f[i][j]\)表示前\(i\)天手中还有\(j\)股股票的最大收益.转移显然. 然而这样子似乎并没有什么优化的余地. 考虑这样子一个贪心,假设我们已经知道了前面\(n-1\)天在最优答案的情况下的购买和卖出情况,只考虑最后这一天,那么你会找到一个可以买入股票的一天,并且其价格最小,然后和这一天的股票价格进行比较,如果更低,你就会在那一天买入股票,在这一…
Problem A Between the Offices 水题,水一水. #include<bits/stdc++.h> using namespace std; int n; ]; int main() { cin>>n; ,cnt2=; scanf("%s",s); ;i<n-;i++) { ]=='F') cnt1++; ]=='S') cnt2++; } if(cnt1>cnt2) puts("YES"); else p…
https://vjudge.net/problem/CodeForces-867E 题意 一个物品在n天内有n种价格,每天仅能进行买入或卖出或不作为一种操作,可以同时拥有多种物品,问交易后的最大利益. 分析 贪心的取,当然是低买高卖.当买卖的顺序需要斟酌.考虑用小顶堆(优先队列)来维护这过程,我们每次得到一个新的价格,将其和堆顶的价格比较,如果比堆顶的价格低,就直接放入堆中,如果比堆顶的价格高,就意味着我们可以提前以堆顶的价格买入一个物品,然后以当前价格卖出,因此我们可以算出本次收益加到总收益…
大意: 第i天可以花$a_i$元买入或卖出一股或者什么也不干, 初始没钱, 求i天后最大收益 考虑贪心, 对于第$x$股, 如果$x$之前有比它便宜的, 就在之前的那一天买, 直接将$x$卖掉. 并不需要计算出最优的卖出时间, 因为若$x$后有更优价格, 可以再买回$x$, 不影响贪心结果 #include <iostream> #include <algorithm> #include <math.h> #include <cstdio> #include…
[题意]已知n天股价,每天可以买入一股或卖出一股或不作为,最后必须持0股,求最大收益. [算法]堆 贪心? [题解] 不作为思想:[不作为=买入再卖出] 根据不作为思想,可以推出中转站思想. 中转站思想:[买卖可以借助中转站,差值累加] 做法:从左到右,每次将两个-v加入堆,然后取大堆顶出来组成买卖. 理解:每个数字都和前面一个数字配对,然后在堆中留下两个数字,第一次访问表示转为中转站,第二次访问表示买该数字. 特别地,当前面没有比它小的数字时,会和自己组成买卖,就直接省去中转站功能. ★其实这…
\(\\​\) \(Description\) 给出\(N\)天股票的价钱\(A_1,...,A_N\),每天可以什么都不做,或者买入或卖出\(1\)支股票,分别花出或收入\(A_i\)元,求最大收益. \(N\in [1,3\times10^5]\),\(A_i\in [1,10^6]\) \(\\\) \(Solution\) 贪心,显然每天的一支股票只有两种选择,这种情况下通常用堆去维护当前最优代价,问题是如何消去交换的影响. 具体地说,首先有一个简单的思路就是,按时间顺序将价格插入一个小…
Description 有nn个城市,第ii个城市商品价格为aiai​,从11城市出发依次经过这nn个城市到达n n城市,在每个城市可以把手头商品出售也可以至多买一个商品,问最大收益. Input 第一行一整数T T表示用例组数,每组用例首先输入一整数nn表示城市数量,之后输出nn个整数ai ai​表示每个城市商品单价 (1≤T≤250,1≤n≤105,∑n≤5⋅105) Output 输出最大收益 sol:显然是贪心题:不难证明下面的东西是对的. 如果某天的价格不能卖,那么插入队列一次,表示这…
A:显然构造一组只包含1和2面值的数据即可. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #include<cstring> #include<algorithm> using namespace std; #define ll long long char getc(){char c=getchar();while ((c<'A'|…