股神小L (stock.c/pas/cpp)
============================

小L厌倦了算法竞赛,希望到股市里一展身手。他凭借自己还行的计算机功底和可以的智商,成功建立一个模型预测了一支股票接下来n天的价格。

我们把这支股票第i天的价格称为a_i。在接下来n天里,每一天小L可以选择花费a_i买入一股或者卖出一股从而获得a_i元收入。

当然小L卖出股票的时候,自己的账户上必须要有至少一股的剩余。现在小L希望知道,在n天过去之后,采取最优策略的情况下自己最多赚到多少钱。

注意小L家产万贯,可以视为初始本金为无穷,另外每一天小L能且只能进行一次买或卖的操作,不能什么都不做。

输入格式
一行一个数n,表示接下来n天
接下来了n行,每行一个正整数,表示股票在这一天的价格。

输出格式
一行一个整数,表示小L的最大获利,如果小L赔钱,则输出相应的负数

样例输入1
4
1 3 2 4

样例输出1
4

样例输入2
4
1 2 3 4

样例输出2
4

数据范围
对于10%的数据, 1 <= n <= 200
对于30%的数据, 1 <= n <= 3000
对于100%的数据, 1 <= n, a_i <= 200000

评测环境:Win7+Lemon

//100分贪心
#include<cstdio>
#include<iostream>
#include<ext/pb_ds/priority_queue.hpp>
#define FRE(name) freopen(#name".in","r",stdin);freopen(#name".out","w",stdout);
using namespace std;
__gnu_pbds::priority_queue<int,greater<int> >q;
inline int read(){
int x=;char ch=getchar();
while(ch<''||ch>''){ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
return x;
}
const int N=2e5+;
int n,a[N];
long long sum,ans;
int main(){
FRE(stock)
n=read();
for(int i=;i<=n;i++) sum+=(a[i]=read());
for(int i=,t;i<=n;i++){
if(i&){
t=q.top();
if(a[i]>t){
ans+=a[i]-t;q.pop();
q.push(a[i]);
}
}
else ans+=a[i],q.push(a[i]);
}
cout<<ans*-sum;
return ;
}
/*30分
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
const int N=3005;
const int inf=0x3f3f3f3f;
int n,ans,a[N],f[N][N];
int main(){
freopen("stock.in","r",stdin);
freopen("stock.out","w",stdout);
scanf("%d",&n);
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
for(int i=1;i<=n;i++){
for(int j=0;j<=n;j++){
f[i][j]=-inf;
}
}
//f[1][0]=0;WA*1
f[1][1]=-a[1];
for(int i=2;i<=n;i++){
for(int j=0;j<=n;j++){
if(f[i-1][j]!=-inf){
if(j<n) f[i][j+1]=max(f[i][j+1],f[i-1][j]-a[i]);
if(j>0) f[i][j-1]=max(f[i][j-1],f[i-1][j]+a[i]);
}
}
}
for(int i=0;i<=n;i++) ans=max(ans,f[n][i]);
printf("%d",ans);
return 0;
}
*/

股神小L 2016Vijos省选集训 day1的更多相关文章

  1. 2016vijos 1-2 股神小L(堆)

    维护前i天的最优解,那么在后面可能会对前面几天的买卖情况进行调整 如果前面买入,买入的这个在后面一定不会卖出 如果前面卖出,卖出的这个可能会在后面变成买入,因为买这个,卖后面的会获得更多的收益 用一个 ...

  2. 2016北京集训测试赛(十四)Problem A: 股神小L

    Solution 考虑怎么卖最赚钱: 肯定是只卖不买啊(笑) 虽然说上面的想法很扯淡, 但它确实能给我们提供一种思路, 我们能不买就不买; 要买的时候就买最便宜的. 我们用一个优先队列来维护股票的价格 ...

  3. 股神小L

    题解 贪心 若当前手中还持有股,则一定会卖出去. 否则,考虑之前卖出的最便宜的股,若售价比当前的股高,就买下这个股,否则我们就把之前卖出的最便宜的股改为买入,这样一定会有股,然后再把这个股卖出即可. ...

  4. 股神小L [贪心]

    题面 思路 股票题肯定是贪心或者$dp$啊 这个题比较$naive$,可以看出来你这里买股票的过程一定是能不买就不买,能卖就拣最贵的日子卖,而且时间不能倒流(废话= =||) 所以我们按照时间从前往后 ...

  5. 兔子的晚会 2016Vijos省选集训 day1

    兔子的晚会 (xor.c/pas/cpp)============================= 很久很久之前,兔子王国里居住着一群兔子.每到新年,兔子国王和他的守卫总是去现场参加晚会来欢庆新年. ...

  6. [2016北京集训试题14]股神小D-[LCT]

    Description Solution 将(u,v,l,r)换为(1,u,v,l)和(2,u,v,r).进行排序(第4个数为第一关键字,第1个数为第二关键字).用LCT维护联通块的合并和断开.(维护 ...

  7. 2016北京集训测试赛(十四)Problem B: 股神小D

    Solution 正解是一个\(\log\)的link-cut tree. 将一条边拆成两个事件, 按照事件排序, link-cut tree维护联通块大小即可. link-cut tree维护子树大 ...

  8. (2016北京集训十四)【xsy1556】股神小D - LCT

    题解: 题解居然是LCT……受教了 把所有区间按照端点排序,动态维护目前有重叠的区间,用LCT维护即可. 代码: #include<algorithm> #include<iostr ...

  9. 股神小D [点分治 or LCT]

    题面 思路 点分治非常$naive$,不讲了,基本思路就是记录路径最小最大值.....然后没了 重点讲一下LCT的做法(好写不卡常)(点分一堆人被卡到飞起hhhh) 首先,这个路径限制由边限制决定,而 ...

随机推荐

  1. UVA 1665 Islands

    题意:输入一个n*m矩阵,每一个格子都有一个正整数,再输入T个整数ti,对于每一个ti,输出大于ti的正整数组成多少个四连快 思路:正着做的话事实上相当于删除连通块,而假设反着做的话就相当于变成添加连 ...

  2. Linux学习之二十-Linux文件系统

    Linux文件系统 文件系统的定义 文件系统是操作系统的必备软件,文件系统是对一个存储设备上的数据(block)和元数据(inode)进行组织的一种机制.文件系统可以帮助用户管理磁盘空间,进行文件的快 ...

  3. ecshop_商品描述远程图片自动本地化插件

    解压缩文件,覆盖 ecshop 的 \includes\fckeditor文件夹. 这样在后台添加商品的商品详细描述,编辑器最后一个按钮就是自动下载 远程图片到你的网站空间,这样可防止对方网站图片失效 ...

  4. GridView后台绑定数据列表方法

    在很多时候数据绑定都是知道了数据表中的表字段来绑定GridView控件的,那时候我就有个想法希望通过表明来查询数据库中的字段来动态的绑定GirdView控件数据并提供了相关的操作列,在网上找了一些资料 ...

  5. Java.lang.NoClassDefFoundError--找不到相应的类

    如题Java.lang.NoClassDefFoundError 错误可能是由于找不到指定的类引起的. 一般出现在java 反射调用,或者通过jniRegisterNativeMethods手动注册j ...

  6. CSS——如何清除浮动

    众所周知,平时在写HTML代码时,难免少不了使用Float样式,这样一来,假使您没有清除浮动,那么有浮动元素的父元素容器将元素将无法自动撑开.换句简单好理解的话来说,假如你在写CODE时,其中div. ...

  7. MVVM模式源码分析手写实现

    1.demo1.html <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...

  8. mongo: 改

    语法:db.CollectionName.upadte(查询表达式,新值,选项); 查询表达式:定位哪些列是要被修改的列(即使查询表达式能命中多行,默认也只改一行,如果想改多行,可以用multi选项, ...

  9. textarea字数限制方法一例

    <!-- 控制textarea最大输入字数 --><script type="text/javascript">function checkLen(obj) ...

  10. Ffmpeg音频转码 卡顿(MP2转AAC)

    最好经手一个小的功能将mp2实时流转成AAC并发布成rtmp音频流,本身不是很难的一个需求, 一个晚上就能将功能开发好.功能开发完毕后,找来一音频文件利用Ffmpeg命令将音视频文件推成 实时udp格 ...