zoukankan      html  css  js  c++  java
  • 营业额统计

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

    #include<iostream> #include<cstdio> #include<cstring> using namespace std; #define MAXN 100005 #define INF 10000000 int ch[MAXN][2],fa[MAXN],sale[MAXN]; int ans,tot,root; #define min(a,b) ((a)>(b)?(b):(a)) void rotato(int x) { if(x==0||fa[x]==0)return; int y=fa[x],z=fa[y]; bool flag=(ch[y][1]==x); ch[y][flag]=ch[x][!flag]; if(ch[x][!flag])fa[ch[x][!flag]]=x; ch[x][!flag]=y; fa[y]=x; fa[x]=z; if(z)ch[z][ch[z][1]==y]=x; } void splay(int x,int goal) { for(int y;(y=fa[x])!=goal;rotato(x)) { int z; if((z=fa[y])!=goal) { if((ch[z][1]==y)==(ch[y][1]==x)) rotato(y); else rotato(x); } } if(goal==0)root=x; } int insert(int &r,int x,int f) { int temp1,temp2; if(r==0) { sale[++tot]=x; r=tot; fa[r]=f; splay(r,0); return INF; } if(x==sale[r]) return 0; else if(x<sale[r]) { temp1=sale[r]-x; temp2=insert(ch[r][0],x,r); return min(temp1,temp2); } else {temp1=x-sale[r]; temp2=insert(ch[r][1],x,r); return min(temp1,temp2); } } int main() { int n,t; scanf("%d",&n); for(int i=0;i<n;i++) { scanf("%d",&t); if(i)ans+=insert(root,t,0); else {ans=t; insert(root,t,0); } } printf("%d ",ans); }
  • 相关阅读:
    凭这份pdf让我轻松拿下了蚂蚁金服、字节跳动、小米等大厂的offer
    阿里面试官看了我写的多线程博文,反问你也看过那本的(多线程)
    Docker简介及基本使用
    springboot常见问题之Rustful风格下,@PutMapping、@@DeleteMapping失效问题
    SpringBoot之国际化功能
    SpringBoot之Thymeleaf模板引擎
    SpringBoot之静态资源处理
    SpringBoot 配置原理
    SpringBoot: 配置文件用法
    SpringBoot版hello world
  • 原文地址:https://www.cnblogs.com/hefenghhhh/p/5033533.html
Copyright © 2011-2022 走看看