bzoj1588 [HNOI2002]营业额统计

1588: [HNOI2002]营业额统计

Time Limit: 5 Sec  Memory Limit: 162 MB
Submit: 17931  Solved: 7391
[Submit][Status][Discuss]

Description

营业额统计 Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况。 Tiger拿出了公司的账本,账本上记录了公司成立以来每天的营业额。分析营业情况是一项相当复杂的工作。由于节假日,大减价或者是其他情况的时候,营业额会出现一定的波动,当然一定的波动是能够接受的,但是在某些时候营业额突变得很高或是很低,这就证明公司此时的经营状况出现了问题。经济管理学上定义了一种最小波动值来衡量这种情况: 该天的最小波动值 当最小波动值越大时,就说明营业情况越不稳定。 而分析整个公司的从成立到现在营业情况是否稳定,只需要把每一天的最小波动值加起来就可以了。你的任务就是编写一个程序帮助Tiger来计算这一个值。 第一天的最小波动值为第一天的营业额。  输入输出要求

Input

第一行为正整数 ,表示该公司从成立一直到现在的天数,接下来的n行每行有一个整数(有可能有负数) ,表示第i
天公司的营业额。
天数n<=32767,
每天的营业额ai <= 1,000,000。
最后结果T<=2^31

 

Output

输出文件仅有一个正整数,即Sigma(每天最小的波动值) 。结果小于2^31 。

Sample Input

6
5
1
2
5
4
6

Sample Output

12

HINT

 

结果说明:5+|1-5|+|2-1|+|5-5|+|4-5|+|6-5|=5+4+1+0+1+1=12


该题数据bug已修复.----2016.5.15

分析:splay裸题,每次找前驱和后继,找前驱的方法是在左子树中找最大的数(一直往右跳),后继就是在右子树中找最小的数(往左跳).需要注意的是每次插入完一个数都要将它翻到上面去.并且要更新根节点!
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>using namespace std;const int maxn = 40010;struct node
{int fa,left,right,v;
}e[maxn];int n,ans,Time,t,root = 1;
bool flag = true;void turnr(int x)
{int y = e[x].fa;int z = e[y].fa;e[y].left = e[x].right;if (e[x].right != -1)e[e[x].right].fa = y;e[x].fa = z;if (z != -1){if (e[z].left == y)e[z].left = x;elsee[z].right = x;}e[x].right = y;e[y].fa = x;
}void turnl(int x)
{int y = e[x].fa;int z = e[y].fa;e[y].right = e[x].left;if (e[x].left != -1)e[e[x].left].fa = y;e[x].fa = z;if (z != -1){if (e[z].left == y)e[z].left = x;elsee[z].right = x;}e[x].left = y;e[y].fa = x;
}void splay(int x)
{while (e[x].fa != -1){int y = e[x].fa;int z = e[y].fa;if (z == -1){if (x == e[y].left)turnr(x);elseturnl(x);}else{if (e[z].left == y && e[y].left == x){turnr(y);turnr(x);}else{if (e[z].right == y && e[y].right == x){turnl(y);turnl(x);}else{if (e[z].left == y && e[y].right == x){turnl(x);turnr(x);}else{turnr(x);turnl(x);}}}}}root = x;
}void insert(int x,int y)
{if (x == e[y].v){flag = false;splay(y);return;}if (x < e[y].v){if (e[y].left == -1){e[y].left = ++Time;e[Time].left = e[Time].right = -1;e[Time].fa = y;e[Time].v = x;}elseinsert(x,e[y].left);}else{if (e[y].right == -1){e[y].right = ++Time;e[Time].left = e[Time].right = -1;e[Time].fa = y;e[Time].v = x;}elseinsert(x,e[y].right);}
}int findl(int x)
{int y = e[x].left;if (y == -1)return y;while (e[y].right != -1)y = e[y].right;return y;
}int findr(int x)
{int y = e[x].right;if (y == -1)return y;while (e[y].left != -1)y = e[y].left;return y;
}void solve(int x)
{flag = true;insert(x,root);if (!flag)return;splay(Time);int p = findl(Time),q = findr(Time);int temp = 0x7fffffff;if (p != -1)temp = min(temp,abs(x - e[p].v));if (q != -1)temp = min(temp,abs(x - e[q].v));if (temp != 0x7fffffff)ans += temp;
}int main()
{scanf("%d",&n);scanf("%d",&t);ans += t;e[++Time].fa = -1;e[Time].left = -1;e[Time].right = -1;e[Time].v = t;for (int i = 2; i <= n; i++){scanf("%d",&t);solve(t);}printf("%d\n",ans);return 0;
}

 

转载于:https://www.cnblogs.com/zbtrs/p/8231725.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/369968.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python管道通信_Python进程通信之匿名管道实例讲解

匿名管道管道是一个单向通道,有点类似共享内存缓存.管道有两端,包括输入端和输出端.对于一个进程的而言,它只能看到管道一端,即要么是输入端要么是输出端.os.pipe()返回2个文件描述符(r, w),表示可读的和可写的.示例代码如下:复制代码 代码如下:#!/usr/bin/pythonimport timeim…

css3中的box-sizing属性的使用

box-sizing属性用来定义元素的width和height所表示的区域,该属性一般有三种值&#xff1a;content-box、border-box、inherit。 其中inherit表示box-sizing的值应该从父元素继承。 content-box和border-box的主要区别就是元素的width和height的值包不包括border、padding这两…

ES6扩展运算符...进行的数组删除

今天写了按照React小书写了Reducer&#xff0c;发现基础真是太重要了&#xff0c;所有关于上层建筑的细节都需要回到下层细节中去寻找&#xff0c;而且现在的基础也由ES3变成了ES6了。 const ADD_USER "ADD_USER" const DELETE_USER "DELETE_USER" const…

中南大学在线考试答案计算机基础,中南大学《计算机基础》在线考试题库(267题)(有答案).doc...

中南大学《计算机基础》在线考试题库(267题)(有答案).doc 计算机基础01 总共89题共100分 一. 单选题 (共35题,共35分) 1. 域名服务器DNS的主要功能是( )。 (1分) A.通过请求及回答获取主机和网络相关的信息 B.查询主机的MAC地址 C.为主机自动命名 D.合理分配IP地址 ★标准答案&…

自动化的OSGi测试运行器

在我的团队成员中&#xff0c;我以忘记维护&#xff08;JUnit&#xff09;测试套件而闻名。 我只是无法为此付出额外的手动为套件添加测试的步骤。 幸运的是&#xff0c;有连续的集成服务器通过命名模式收集测试。 如果我介绍的一项孤立测试失败了&#xff0c;那么它会脱颖而出…

php post请求后端拿不到值_PHP Post获取不到非表单数据的问题解决办法

问题描述在使用vue-axios向后端post数据时&#xff0c;PHP端获取不到post的数据。问题解决修改php.ini配置找到php.ini配置文件&#xff0c;查找enable_post_data_reading变量&#xff0c;修改为打开状态&#xff0c;注释掉句前分好; Whether PHP will read the POST data.; Th…

CSS制作简单loading动画

曾经以为&#xff0c;loading的制作需要一些比较高深的web动画技术&#xff0c;后来发现大多数loading都可以用“障眼法”做出来。比如一个旋转的圆圈&#xff0c;并不都是将gif图放进去&#xff0c;有些就是画个静止图像&#xff0c;然后让它旋转就完了。gif图也可以&#xff…

机器学习:多变量线性回归

************************************** 注&#xff1a;本系列博客是博主学习Stanford大学 Andrew Ng 教授的《机器学习》课程笔记。博主深感学过课程后&#xff0c;不进行总结非常easy遗忘&#xff0c;依据课程加上自己对不明确问题的补充遂有此系列博客。本系列博客包含线性…

Java对象复活

总览 收集覆盖了finalize&#xff08;&#xff09;的对象之后&#xff0c;将其添加到终结处理队列中&#xff0c;以在调用每个对象的finalize&#xff08;&#xff09;方法之后进行清理。 如果您复活该物体&#xff0c;会发生什么&#xff1f; 何时定稿&#xff1f; finalize方…

经过路由无法找到计算机,电脑无法启动服务提示系统找不到指定的路径(图)

原标题&#xff1a;"电脑无法启动服务提示系统找不到指定的路径"相关电脑问题教程分享。 - 来源:191路由网。众所周知&#xff0c;使用电脑的时候需要启动一些服务才能使用相关的功能&#xff0c;但是如果出现无法启动服务项&#xff0c;并且提示“错误3&#xff1a;…

有关域索引错误产生的原因及解决办法

1说明 数据库错误ORA-29861:域索引标记为LOADING/FAILED/UNUSABLE&#xff0c;其错误原因及解决办法&#xff0c;根据ORACLE官方文档的说法如下&#xff1a; // *Cause: An attempt has been made to access a domain index that is// being built or is marked faile…

详细解读css中的浮动以及清除浮动的方法

对于前端初学者来说&#xff0c;css浮动部分的知识是一块比较难以理解的部分&#xff0c;下面我将把我学习过程中的心得分享给大家。 导读&#xff1a; 1.css块级元素讲解 2.css中浮动是如何产生的 3.出现浮动后&#xff0c;如何清除浮动&#xff08;本文将涉及到多种清除浮动…

微信多开txt_电脑版微信怎么双开、多开

新建一个txt文本文件&#xff0c;在文件中写入如下代码&#xff1a;echo offstart /d "C:\Program Files (x86)\Tencent\WeChat\" WeChat.exestart /d "C:\Program Files (x86)\Tencent\WeChat\" WeChat.exeexit保存文本文件。这里需要注意的是&#xff1a…

java 基础--随笔

---恢复内容开始--- java 对大小写敏感。 java没有任何无符号类型&#xff08;unsigned&#xff09;。 C/C是编译型语言&#xff0c;java是解释性语言。 JAVA编译过程同C/C 的 编译有些不同。当C编译器编译生成一个对象的代码时&#xff0c;该代码是为在某一特定硬件平台运行而…

多源计算机培训,多源数据汇聚的多流形学习算法研究

摘要&#xff1a;随着信息技术和互联网的飞速发展,人们可以从多个信息源获得数据,即多源数据.由于多源数据具有类型多样,尺度不统一等特点,对多源数据进行汇聚并提取有效信息是机器学习和模式识别等领域研究的热点.由于多流形学习能够有效地揭示复杂数据中的内在结构,因此本文主…

Ubuntu 16.04 安装mysql5.7

技术更新换代&#xff0c;数据库也不断更新&#xff0c;需要不断努力学习&#xff0c;下面就是如何在 ubuntu中安装 mysql。 废话不多说&#xff0c;上来就是干 一、安装mysql 5.7 sudo apt-get update sudo apt-get install mysql-server 中间会提示您输出root 密码&#xff…

CSS多列布局(实例)

前言 一列布局二列布局三列布局 1 一列布局 一列布局&#xff1a; HTML部分 <!DOCTYPE html> <html> <head> <meta charset"utf-8" /> <title>一列布局</title> </head> <body> <div class"head">…

阿帕奇骆驼备忘单

轮询一个空目录&#xff08;并发送一个空消息&#xff0c;正文为空&#xff09;&#xff1a; from(file://temp?sendEmptyMessageWhenIdletrue)停止路线&#xff1a; .process(new Processor() {public void process(Exchange exchange) throws Exception {getContext().stopR…

js中双感叹号_JavaScript中双叹号(!!)作用

经常看到这样的例子&#xff1a;vara&#xff1b;var b!!a;a默认是undefined。!a是true&#xff0c;!!a则是false&#xff0c;所以b的值是false&#xff0c;而不再是undefined&#xff0c;也非其它值&#xff0c;主要是为后续判断提供便利。!!一般用来将后面的表达式强制转换为…

大头贴计算机教程,推荐!自家电脑也能拍大头贴的秘密

您可能感兴趣的话题&#xff1a;美图拍拍核心提示&#xff1a;一直都超爱拍大头贴&#xff0c;喜欢每张都能换不同的框框&#xff1b;喜欢可以直接看到效果&#xff0c;做出满意的动作&#xff1b;喜欢将大头贴和朋友们分享……不过夏日炎炎的&#xff0c;出门太麻烦&#xff0…