zoukankan      html  css  js  c++  java
  • 【HNOI 2002 】营业额统计

    P1287 - 【HNOI 2002 】营业额统计

    Description

    Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况。
    Tiger拿出了公司的账本,账本上记录了公司成立以来每天的营业额。分析营业情况是一项相当复杂的工作。由于节假日,大减价或者是其他情况的时候,营业 额会出现一定的波动,当然一定的波动是能够接受的,但是在某些时候营业额突变得很高或是很低,这就证明公司此时的经营状况出现了问题。经济管理学上定义了 一种最小波动值来衡量这种情况:
    该天的最小波动值=min{ |该天以前某一天的营业额-该天营业额| }。

    当最小波动值越大时,就说明营业情况越不稳定。
    而分析整个公司的从成立到现在营业情况是否稳定,只需要把每一天的最小波动值加起来就可以了。你的任务就是编写一个程序帮助Tiger来计算这一个值。
    第一天的最小波动值为第一天的营业额。

    Input

    第一行为正整数n(n<=32767),表示该公司从成立一直到现在的天数,接下来的n行每行有一个正整数ai(ai<=1000000),表示第i天公司的营业额。

    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

    SPLAY维护有序表,每次在有序表中找到与这个元素最接近的两个元素,并插入这个元素,然后把这个点旋转到根结点。
    这道题很坑,没有输满的数据要用0来代替。
     1 #include<set>
     2 #include<map>
     3 #include<queue>
     4 #include<stack>
     5 #include<ctime>
     6 #include<cmath>
     7 #include<string>
     8 #include<vector>
     9 #include<cstdio>
    10 #include<cstdlib>
    11 #include<cstring>
    12 #include<iostream>
    13 #include<algorithm>
    14 using namespace std;
    15 struct data{
    16   int o,l,r;
    17 }t[100010];
    18 int cnt=0;
    19 void zig(int &x){
    20   int y=t[x].r;t[x].r=t[y].l,t[y].l=x,x=y;
    21 }
    22 void zag(int &x){
    23   int y=t[x].l;t[x].l=t[y].r,t[y].r=x,x=y;
    24 }
    25 void Splay(int &x,int p,int &l1,int &r1){
    26   if(!x){x=++cnt;t[x].o=p;return;}
    27   if(p<t[x].o){r1=t[x].o;Splay(t[x].l,p,l1,r1);zag(x);return;}
    28   if(p>t[x].o){l1=t[x].o;Splay(t[x].r,p,l1,r1);zig(x);return;}
    29   l1=r1=t[x].o;
    30 }
    31 int main()
    32 {
    33   freopen("!.in","r",stdin);
    34   freopen("!.out","w",stdout);
    35   int n,x=0,l1,r1,ans=0;
    36   scanf("%d",&n);
    37   for(int i=1;i<=n;i++){
    38     int p=0;
    39     scanf("%d",&p);
    40     l1=r1=t[x].o;
    41     Splay(x,p,l1,r1);
    42     ans+=min(abs(l1-p),abs(r1-p));
    43   }
    44   printf("%d",ans);
    45   return 0;
    46 }
    
    
    
     
  • 相关阅读:
    简单说说sharepoint虚机 金大昊(jindahao)
    SharePoint 自定义UI 金大昊(jindahao)
    学习SharePoint 2010 UI 总结 金大昊(jindahao)
    隐藏sharepoint2010列表的下拉菜单 金大昊(jindahao)
    安装Office Web Apps 2010 金大昊(jindahao)
    corev4.css
    SharePoint 2010的Form认证用户维护页面 金大昊(jindahao)
    今天买了两本中文SharePoint2010书 金大昊(jindahao)
    痛苦的日立移动硬盘 金大昊(jindahao)
    liferay开发环境创建
  • 原文地址:https://www.cnblogs.com/pantakill/p/6679633.html
Copyright © 2011-2022 走看看