tiger最近被公司公升任為營業部經理,他上任後接受公司交給的第一項任務便是統計並分析公司成立以來的營業情況。
tiger拿出了公司的賬本,賬本上記錄了公司成立以來每天的營業額。分析營業情況是一項相當複雜的工作。由於節假日,大減價或者是其他情況的時候,營業額會出現一定的波動,當然一定的波動是能夠接受的,但是在某些時候營業額突變得很高或是很低,這就證明公司此時的經營狀況出現了問題。經濟管理學上定義了一種最小波動值來衡量這種情況:
當最小波動值越大時,就說明營業情況越不穩定。
而分析整個公司的從成立到現在營業情況是否穩定,只需要把每一天的最小波動值加起來就可以了。你的任務就是編寫乙個程式幫助tiger來計算這乙個值。
第一天的最小波動值為第一天的營業額。
該天的最小波動值=min。
輸入格式:
第一行為正整數n(n<=32767) ,表示該公司從成立一直到現在的天數,接下來的n行每行有乙個整數ai(|ai|<=1000000) ,表示第i天公司的營業額,可能存在負數。
輸出格式:
輸入樣例#1:
6512546
輸出樣例#1:
12
我們考慮建一顆splay,對於每一天我們先把這一天的營業額加入到splay中,然後查詢splay中的前驅和後繼(已經轉到root了),然後比較一下累加一下就可以了
#include#include#include#include#define inf 0x7f7f7f7f
const int maxn=1e7;
using namespace std;
int n,sz,root,sum[maxn],f[maxn],ch[maxn][2],siz[maxn],cnt[maxn],key[maxn];
long long ans;
int getson(int x)
void update(int x)
void clear(int x)
void create(int v)
void rotate(int x)
void splay(int x)
int pre()
int nex()
void insert(int v)
fa=now;
now=ch[fa][v>key[fa]];
if(!now)}}
}int main()
printf("%lld",ans);
return 0;
}
P2234 HNOI2002 營業額統計
tiger最近被公司公升任為營業部經理,他上任後接受公司交給的第一項任務便是統計並分析公司成立以來的營業情況。tiger拿出了公司的賬本,賬本上記錄了公司成立以來每天的營業額。分析營業情況是一項相當複雜的工作。由於節假日,大減價或者是其他情況的時候,營業額會出現一定的波動,當然一定的波動是能夠接受的...
P2234 HNOI2002 營業額統計
題目鏈結 平衡樹練手題,我們看它這個數列是動態插入的,所以自然而然就會想到用平衡樹來維護。平衡樹splay推薦大家看這篇部落格 其實差的最小值只有可能是它與其前驅或後繼之差,不然就沒有更小的了。因為節點是動態插入的,根據splay的性質,我們為保證複雜度,就會每次將操作節點旋到根,而他的前驅和後繼必...
P2234 HNOI2002 營業額統計
tiger最近被公司公升任為營業部經理,他上任後接受公司交給的第一項任務便是統計並分析公司成立以來的營業情況。tiger拿出了公司的賬本,賬本上記錄了公司成立以來每天的營業額。分析營業情況是一項相當複雜的工作。由於節假日,大減價或者是其他情況的時候,營業額會出現一定的波動,當然一定的波動是能夠接受的...