bzoj1588 營業額統計

2021-08-15 21:12:21 字數 1438 閱讀 3705

2023年3月28日

5,309

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

第一行為正整數 ,表示該公司從成立一直到現在的天數,接下來的n行每行有乙個正整數 ,表示第i天公司的營業額。

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

5 1

2 5

4 6

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

題解:平衡樹查詢前驅後繼,求它們之間與該天營業額絕對值的最小值即可。

**:

#include#includeusing namespace std;

int n,ans,root,tot,p,t1,k1,a[100000],lc[100000],rc[100000],size[100000],cnt[100000],fa[100000],val[100000];

void updata(int x)

} void zig(int x)

void zag(int x)

void splay(int &root,int x)

else if(lc[y]==x)zig(x);

else zag(x);

} root=x;

} void sp(int x)

void insert(int &k,int key,int p)

size[k]++;

if(key==val[k])

if(keyval[k])findnxt(rc[k],key);

else

} void findpr(int key)

void findnx(int key)

int main()

t1=-1000000000;k1=1000000000;

findpr(a[i]);

findnx(a[i]);

ins(a[i]);

ans+=min(a[i]-t1,k1-a[i]);

}printf("%d",ans);

}

bzoj1588營業額統計

treap一發,每次尋找最接近的兩個以前的點計算即可,聽同學吐槽我的 風格很像黃學長,恩沒錯我是學習他的 風格的 include include include include include define n 50005 define inf 10000000 using namespace st...

bzoj1588營業額統計

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

BZOJ 1588 營業額統計

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