題目描述
tiger最近被公司公升任為營業部經理,他上任後接受公司交給的第一項任務便是統計並分析公司成立以來的營業情況。
tiger拿出了公司的賬本,賬本上記錄了公司成立以來每天的營業額。分析營業情況是一項相當複雜的工作。由於節假日,大減價或者是其他情況的時候,營業額會出現一定的波動,當然一定的波動是能夠接受的,但是在某些時候營業額突變得很高或是很低,這就證明公司此時的經營狀況出現了問題。經濟管理學上定義了一種最小波動值來衡量這種情況:
當最小波動值越大時,就說明營業情況越不穩定。
而分析整個公司的從成立到現在營業情況是否穩定,只需要把每一天的最小波動值加起來就可以了。你的任務就是編寫乙個程式幫助tiger來計算這乙個值。
第一天的最小波動值為第一天的營業額。
該天的最小波動值=min。
splay的模板題。
利用二分查詢樹的性質即可找到最接近的兩個數。
如果是最大或最小特殊處理一下即可
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
const
int n=100005;
const
int inf=0x7fffffff;
struct treet[n];
int n;
int delta,ans;
int root,tot;
void rttl(int x)
void rttr(int x)
void splay(int x)
else
}else
else
} }
} } void insert(int k)
int x=root,y;
while (x)
t[++tot].s=1; t[tot].k=k; t[tot].fa=y;
if (kelse t[y].r=tot;
splay(tot);
} int f1,f2;
int mi(int xx)
int x=xx;
while (t[x].r)
return t[x].k;
} int ma(int xx)
int x=xx;
while (t[x].l)
return t[x].k;
} int find(int xx)
else
} splay(x);
return t[x].k;
} int main()
} printf("%d\n",ans);
}
洛谷P2234 HNOI2002 營業額統計
tiger最近被公司公升任為營業部經理,他上任後接受公司交給的第一項任務便是統計並分析公司成立以來的營業情況。tiger拿出了公司的賬本,賬本上記錄了公司成立以來每天的營業額。分析營業情況是一項相當複雜的工作。由於節假日,大減價或者是其他情況的時候,營業額會出現一定的波動,當然一定的波動是能夠接受的...
洛谷 P2234 HNOI2002 營業額統計
給定乙個序列,對於每乙個數都要查詢 序列中在這個數前與這個數最接近的數是什麼?然後將最接近的數字與這個數字的差累加。序列第乙個數字直接加自己 查詢在這個數之前與這個數最接近的數,我們很容易想到用二叉搜尋樹 bst 來做。雖然資料略水暴力排序每次查詢從乙個數往左右找也能過。include includ...
P2234 HNOI2002 營業額統計
tiger最近被公司公升任為營業部經理,他上任後接受公司交給的第一項任務便是統計並分析公司成立以來的營業情況。tiger拿出了公司的賬本,賬本上記錄了公司成立以來每天的營業額。分析營業情況是一項相當複雜的工作。由於節假日,大減價或者是其他情況的時候,營業額會出現一定的波動,當然一定的波動是能夠接受的...