BZOJ 1588 HNOI2002 營業額統計

2022-08-16 17:30:11 字數 1956 閱讀 1222

1588

: [hnoi2002]營業額統計

time limit:

5 sec memory limit: 162

mbsubmit:

17427 solved: 7104

[submit][status][discuss]

description

營業額統計 tiger最近被公司公升任為營業部經理,他上任後接受公司交給的第一項任務便是統計並分析公司成立以來的營業情況。 tiger拿出了公司的賬本,賬本上記錄了公司成立以來每天的營業額。分析營業情況是一項相當複雜的工作。由於節假日,大減價或者是其他情況的時候,營業額會出現一定的波動,當然一定的波動是能夠接受的,但是在某些時候營業額突變得很高或是很低,這就證明公司此時的經營狀況出現了問題。經濟管理學上定義了一種最小波動值來衡量這種情況: 該天的最小波動值 當最小波動值越大時,就說明營業情況越不穩定。 而分析整個公司的從成立到現在營業情況是否穩定,只需要把每一天的最小波動值加起來就可以了。你的任務就是編寫乙個程式幫助tiger來計算這乙個值。 第一天的最小波動值為第一天的營業額。  輸入輸出要求

input

第一行為正整數 ,表示該公司從成立一直到現在的天數,接下來的n行每行有乙個整數(有可能有負數) ,表示第i

天公司的營業額。

天數n<=32767

,每天的營業額ai

<= 1,000,000

。最後結果t

<=2^31

output

輸出檔案僅有乙個正整數,即sigma(每天最小的波動值) 。結果小於2^31

。sample input65

1254

6sample output

12hint

結果說明:

5+|1-5|+|2-1|+|5-5|+|4-5|+|6-5|=5+4+1+0+1+1=12

該題資料bug已修復.----2016.5.15

題目剛開始看道題的時候看不懂

這道題目的大意就是對於每乙個i找到i之前離a[i]最接近的數,他們倆的差值作為波動,最後累加

維護區間查詢離某個值最近當然treep更好用一些,getprev和getnext函式查詢大和小最近的

一比較即可

**如下:

1 #include 2

#define ll long long

3using

namespace

std;

4 inline int

read()

7while(isdigit(ch))

8return x*f;9}

10const

int maxn=1e6+10;11

namespace

zhangenmingt[maxn<<1

];16 inline void left_rota(int &root)

22 inline void right_rota(int &root)

28 inline void myinsert(int &root,int

x)36

if(x==t[root].v)

39else

44else48}

49}50 inline int getnext(int root,int

x)56

}57 inline int getprev(int root,int

x)62

else

return

max(t[root].v,getprev(t[root].rightt,x));63}

64void

init()69}

70void

solve()

8384 cout

86}87int

main()

view code

碼了半個小時qaq

bzoj1588 HNOI2002 營業額統計

給出n個數,求每個數和它前面每個數的差值絕對值的最小值之和。n 32767 很顯然求前驅後驅。可以離散化後用權值線段樹二分找。也可以直接用splay找。或者還可以離線排完序用雙向鍊錶找。你喜歡就好嘍。orz bzoj上rank1 0ms踩所有人 include include include def...

BZOJ 1588 HNOI2002 營業額統計

description 營業額統計 tiger最近被公司公升任為營業部經理,他上任後接受公司交給的第一項任務便是統計並分析公司成立以來的營業情況。tiger拿出了公司的賬本,賬本上記錄了公司成立以來每天的營業額。分析營業情況是一項相當複雜的工作。由於節假日,大減價或者是其他情況的時候,營業額會出現一...

BZOJ 1588 HNOI2002 營業額統計

treap的入門題,雖然在splay的 裡看到過這題。遇到2個奇葩問題 1 bzoj 上用srand time null 會re 2 這題的資料不完整 time limit 5 sec memory limit 162 mb submit 6820 solved 2250 submit status...