tiger最近被公司公升任為營業部經理,他上任後接受公司交給的第一項任務便是統計並分析公司成立以來的營業情況。
tiger拿出了公司的賬本,賬本上記錄了公司成立以來每天的營業額。分析營業情況是一項相當複雜的工作。由於節假日,大減價或者是其他情況的時候,營業額會出現一定的波動,當然一定的波動是能夠接受的,但是在某些時候營業額突變得很高或是很低,這就證明公司此時的經營狀況出現了問題。經濟管理學上定義了一種最小波動值來衡量這種情況:
當最小波動值越大時,就說明營業情況越不穩定。
而分析整個公司的從成立到現在營業情況是否穩定,只需要把每一天的最小波動值加起來就可以了。你的任務就是編寫乙個程式幫助tiger來計算這乙個值。
第一天的最小波動值為第一天的營業額。
該天的最小波動值=min。
輸入格式:
輸入由檔案』turnover.in』讀入。
第一行為正整數n(n<=32767) ,表示該公司從成立一直到現在的天數,接下來的n行每行有乙個整數ai(|ai|<=1000000) ,表示第i天公司的營業額,可能存在負數。
輸出格式:
輸入樣例#1:
複製
651輸出樣例#1:2546
複製
12結果說明:5+|1-5|+|2-1|+|5-5|+|4-5|+|6-5|=5+4+1+0+1+1=12
平衡樹的裸題
每次在前面找他的前驅
做差相加
我這的這份可能是平衡樹里跑的最快的了
1 #include2 #include3 #include4using
namespace
std;
5const
int maxn=1e6+10;6
const
int mod=1000000;7
const
int inf=2*0x7ffffff
;8 inline char
nc()
913 inline int
read()
1417
while(c>='
0'&&c<='9')
18return x*f;19}
20int
petnum;
21#define root tree[0].ch[1]
22struct
node
23tree[maxn];
2627
inttot,point;
28bool ident(int
x)29
32void connect(int x,int fa,int
how)
3337
void rotate(int
x)38
48void splay(int x,int
to)4957}
58void newpoint(int x,int
fa)59
64void insert(int
x)65
68int now=root;
69while(1)70
77int nxt=x0:1;78
if(!tree[now].ch[nxt])
7985 now=tree[now].ch[nxt];86}
87}88int lower(int
x)89
99return
ans;
100}
101int upper(int
x)102
112}
113int
main()
114132 printf("%d"
,ans);
133 }
洛谷 P2234 HNOI2002 營業額統計
給定乙個序列,對於每乙個數都要查詢 序列中在這個數前與這個數最接近的數是什麼?然後將最接近的數字與這個數字的差累加。序列第乙個數字直接加自己 查詢在這個數之前與這個數最接近的數,我們很容易想到用二叉搜尋樹 bst 來做。雖然資料略水暴力排序每次查詢從乙個數往左右找也能過。include includ...
P2234 HNOI2002 營業額統計
tiger最近被公司公升任為營業部經理,他上任後接受公司交給的第一項任務便是統計並分析公司成立以來的營業情況。tiger拿出了公司的賬本,賬本上記錄了公司成立以來每天的營業額。分析營業情況是一項相當複雜的工作。由於節假日,大減價或者是其他情況的時候,營業額會出現一定的波動,當然一定的波動是能夠接受的...
P2234 HNOI2002 營業額統計
tiger最近被公司公升任為營業部經理,他上任後接受公司交給的第一項任務便是統計並分析公司成立以來的營業情況。tiger拿出了公司的賬本,賬本上記錄了公司成立以來每天的營業額。分析營業情況是一項相當複雜的工作。由於節假日,大減價或者是其他情況的時候,營業額會出現一定的波動,當然一定的波動是能夠接受的...