營業額統計 Treap

2021-08-28 17:18:11 字數 1397 閱讀 1322

tiger最近被公司公升任為營業部經理,他上任後接受公司交給的第一項任務便是統計並分析公司成立以來的營業情況。

tiger拿出了公司的賬本,賬本上記錄了公司成立以來每天的營業額。分析營業情況是一項相當複雜的工作。由於節假日,大減價或者是其他情況的時候,營業額會出現一定的波動,當然一定的波動是能夠接受的,但是在某些時候營業額突變得很高或是很低,這就證明公司此時的經營狀況出現了問題。經濟管理學上定義了一種最小波動值來衡量這種情況:

當最小波動值越大時,就說明營業情況越不穩定。

而分析整個公司的從成立到現在營業情況是否穩定,只需要把每一天的最小波動值加起來就可以了。你的任務就是編寫乙個程式幫助tiger來計算這乙個值。

第一天的最小波動值為第一天的營業額。

該天的最小波動值=min。

輸入格式:

輸入由檔案』turnover.in』讀入。

第一行為正整數n(n<=32767) ,表示該公司從成立一直到現在的天數,接下來的n行每行有乙個整數ai(|ai|<=1000000) ,表示第i天公司的營業額,可能存在負數。

輸出格式:

輸入樣例#1:

651

2546

輸出樣例#1:

12
結果說明:5+|1-5|+|2-1|+|5-5|+|4-5|+|6-5|=5+4+1+0+1+1=12

treap 邊插入邊找前驅後繼

#include#define n 40005

using namespace std;

struct nodet[n];

int n,a,root,tot,ans1,ans2,ans;

int read()

while(isdigit(ch))cnt=cnt*10+(ch-'0'),ch=getchar();

return cnt*f;

}int randon()

void update_size(int o)

void rotate(int &o,int type)

void insert(int &o,int val)

t[o].size++;

if(val==t[o].key)

if(val=val)

else suf(t[o].ch[1],val);

}void cout(int o)

int main()

cout<

return 0;

}

treap 營業額統計

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

HNOI2002 營業額統計 Treap

hnoi2002 營業額統計 題目大意 給你一串n數序列,對於每乙個剛輸入的數a,找到乙個前面的數k,使得 a k 最小。注釋 n 32767,ai 10 6 想法 剛學treap。這道算treap的練習題裡吧,對於新手來講還是挺有意義的。首先,我們先來講一講treap是個什麼東西。在這之前,我們宣...

營業額統計

給出乙個 n 個數的數列,定義 f i min i ge j 求 sum f i 題目就要我們求在這個數之前並且和這個數的差最小的數,我們考慮這個數必定出現在當前 a i 的前驅或後繼中。所以我們可以用平衡樹維護這個數列,每次求一下前驅和後繼,注意這裡可以相等,再把原數插入進去即可。includeu...