题目描述

数据范围

解法

贪心;

从左往右枚举,设枚举到元素为x,并维护一个堆:

设此时堆顶元素为y,

如果x大于y,那么x可以与y产生差价,立即将差价贡献给答案。

如果y之前已经和其他元素z产生过差价了,那么y显然可以省出来以得到最优答案,因为x-z=x-y+y-z;

否则,把y移出堆。

代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#define ll long long
#define sqr(x) ((x)*(x))
#define ln(x,y) ll(log(x)/log(y))
using namespace std;
const char* fin="trade.in";
const char* fout="trade.out";
const ll inf=0x7fffffff;
const ll maxn=100008;
ll n,i,j,k,v=0,ans,t;
ll a[maxn],son[maxn];
struct dui{
ll data[maxn],num;
void init(){
memset(data,0,sizeof(data));
num=0;
}
dui(){
init();
}
bool cmp(ll v,ll u){
return a[v]<=a[u];
}
void up(ll x){
while (x>1 && cmp(data[x],data[x/2])) swap(data[x],data[x/2]),x=x/2;
}
void down(ll x){
while (x*2<=num && cmp(data[x*2],data[x]) || x*2+1<=num && cmp(data[x*2+1],data[x])){
if (x*2+1>num || cmp(data[x*2],data[x*2+1])){
swap(data[x],data[x*2]);
x=x*2;
}else{
swap(data[x],data[x*2+1]);
x=x*2+1;
}
}
}
void push(ll v){
data[++num]=v;
up(num);
}
void pull(){
swap(data[1],data[num--]);
down(1);
}
ll top(){
if (num) return data[1];
else return 0;
}
}d;
ll read(){
ll x=0,y=0;
char ch=getchar();
while (ch<'0' || ch>'9') {
ch=getchar();
y++;
if (y==10) return -1;
}
while (ch>='0' && ch<='9') x=x*10+ch-'0',ch=getchar();
return x;
}
int main(){
freopen(fin,"r",stdin);
freopen(fout,"w",stdout);
while (1){
n=read();
if (n==-1) break;
ans=0;
t++;
d.init();
for (i=1;i<=n;i++) a[i]=read();
memset(son,0,sizeof(son));
for (i=1;i<=n;i++){
if (d.top()){
j=d.top();
if (a[i]>a[j]){
ans+=a[i]-a[j];
if (son[j]){
son[j]=0;
son[i]=j;
}else {
d.pull();
son[i]=j;
}
}
}
d.push(i);
}
printf("Case #%lld: %lld\n",t,ans);
}
return 0;
}

启发

有关策略的问题可以考虑贪心;

贪心正着推,可以使用数据结构帮助贪心找到更优的解。

【JZOJ4835】【GDOI2017模拟10.31】量化交易的更多相关文章

  1. 【NOIP2012模拟10.31】掷骰子

    题目 太郎和一只免子正在玩一个掷骰子游戏.有一个有N个格子的长条棋盘,太郎和兔子轮流掷一个有M面的骰子,骰子M面分别是1到M的数字.且掷到任意一面的概率是相同的.掷到几.就往前走几步.当谁走到第N格时 ...

  2. 金融量化分析【day112】:初识量化交易

    一.摘要 为什么需要量化交易? 量化交易是做什么? 量化交易的价值何在? 做量化交易需要什么? 聚宽是什么? 零基础如何快速入门量化交易? 自测与自学 二.量化交易比传统交易强多少? 它能让你的交易效 ...

  3. Python进阶量化交易场外篇4——寻找最优化策略参数

    新年伊始,很荣幸笔者的<教你用 Python 进阶量化交易>专栏在慕课专栏板块上线了,欢迎大家订阅!为了能够提供给大家更轻松的学习过程,笔者在专栏内容之外会陆续推出一些手记来辅助同学们学习 ...

  4. 零起点Python大数据与量化交易

    零起点Python大数据与量化交易 第1章 从故事开始学量化 1 1.1 亿万富翁的“神奇公式” 2 1.1.1 案例1-1:亿万富翁的“神奇公式” 2 1.1.2 案例分析:Python图表 5 1 ...

  5. Contest - 2014 SWJTU ACM 手速测试赛(2014.10.31)

    题目列表: 2146 Problem A [手速]阔绰的Dim 2147 Problem B [手速]颓废的Dim 2148 Problem C [手速]我的滑板鞋 2149 Problem D [手 ...

  6. 深度神经网络在量化交易里的应用 之二 -- 用深度网络(LSTM)预测5日收盘价格

        距离上一篇文章,正好两个星期. 这边文章9月15日 16:30 开始写. 可能几个小时后就写完了.用一句粗俗的话说, "当你怀孕的时候,别人都知道你怀孕了, 但不知道你被日了多少回 ...

  7. 【LSGDOJ1836】: 量化交易 贪心

    题目描述 applepi 训练了一个可以自动在股票市场进行量化交易的模型.通常来说,applepi 写出的模型,你懂得,就好比一架印钞机.不过为了谨慎起见,applepi还是想先检查一下模型的效果.a ...

  8. 17.10.31&11.01

    10.31模拟考试 Prob.1(AC)裸的矩阵幂 Prob.2(WA)(类似括号匹配求合法方案数) 卡特兰数的一个模型运用.可以推出一个式子(推导方法一个erge讲的,一个骚猪讲的) Prob.3( ...

  9. python做量化交易干货分享

    http://www.newsmth.NET/nForum/#!article/Python/128763 最近程序化交易很热,量化也是我很感兴趣的一块. 国内量化交易的平台有几家,我个人比较喜欢用的 ...

随机推荐

  1. 在scrapy中利用Selector来提取数据

    1.创建对象 Selector类的实现位于scrapy.selector模块,创建Selector对象的时候,可以将页面的Html文档字符串传递给Selector构造器方法 2.选中数据 调用Sele ...

  2. LINUX超级用户(权限)在系统管理中的作用

    1.对任何文件.目录或进程进行操作: 但值得注意的是这种操作是在系统最高许可范围内的操作:有些操作就是具有超级权限的root也无法完成: 比如/proc 目录,/proc 是用来反应系统运行的实时状态 ...

  3. 部分树形DP的优化

    ural1018. Binary Apple Tree 题目大意 有一棵n个节点的树,树上每个节点有一个值,选择m个节点使这些节点值的和最大 要求:如果选当前节点,则必须选它的父节点 解法: 我们设d ...

  4. 利用Nginx轻松实现Ajax的跨域请求(前后端分离开发调试必备神技)

    利用Nginx轻松实现浏览器中Ajax的跨域请求(前后端分离开发调试必备神技) 前言 为什么会出现跨域? 造成跨域问题的原因是因为浏览器受到同源策略的限制,也就是说js只能访问和操作自己域下的资源,不 ...

  5. webpack4配置react开发环境

    webpack4大大提高了开发效率,简化了配置复杂度,作为一个大的版本更新,作为一个对开发效率执着的爱折腾的程序员,已经忍不住要尝尝鲜了 首先是cli和webpack的分离,开发webpack应用程序 ...

  6. nvm与nrm

    nvm:切换Node版本   nrm:管理npm包的镜像源 nvm的安装,可以参考官网,windows系统直接https://github.com/coreybutler/nvm-windows/re ...

  7. Linux & CentOS & RHEL

    1.修改centos7的系统编码:https://blog.csdn.net/violet_echo_0908/article/details/58063555 2.windows 环境下使用ultr ...

  8. netbeans调试webapp 只能用localhost访问

    etbeans 我的电脑是192.168.0.2,用这个地址访问 网上有人说,分两种情况 此问题分两种情况: 1. 可以用127.0.0.1访问 2. 不能用127.0.0.1访问 针对第一种情况,我 ...

  9. angular可以做的小功能 未完成

    1,网上购物满多少减多少 思路: 效果图,满500减10元邮费 1,html部分有基本布局, <div> <h3>化妆品</h3> 单价 <input typ ...

  10. Codeforces 1150E(树、线段树)

    要点 括号序列平衡度即树深度的性质 相当于中序遍历,则两点间最浅的地方即是LCA的性质 线段树维护\(d(a) + d(c) - 2*d(lca(a,c))\),一层层剥,思考维护这个量需要什么,结果 ...