tyvj1185營業額統計

2021-06-22 08:10:26 字數 1197 閱讀 1799

描述 description 營業額統計 

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

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

該天的最小波動值=min 

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

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

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

? 輸入輸出要求 

輸入格式 inputformat 第一行為正整數n(n<=32767) ,表示該公司從成立一直到現在的天數,接下來的n行每行有乙個正整數a(<=1000000) ,表示第i天公司的營業額。

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

樣例輸入 sampleinput

651

2546

樣例輸出 sampleoutput

12

資料範圍和注釋 hint 結果說明:5+|1-5|+|2-1|+|5-5|+|4-5|+|6-5|=5+4+1+0+1+1=12

bzoj卡了……不開心

平衡樹裸題。寫了個treap的

#include#include#include#define maxnum 1000001

#define inf 1000000000

struct nodetree[maxnum];

int treesize,root,n,ans,t1,t2;

int min(int a,int b)

else ask_before(tree[now].l,x);

}void ask_after(int now,int x)

else ask_after(tree[now].r,x);

}int main()

printf("%d",ans);

return 0;

}

TYVJ 1185 營業額統計 Splay

該題應該有很多的解法,想過用二分查詢,但是排序操作的複雜度讓我們傷不起。這裡用splay來實現是很方便的。首先插入乙個點,即第乙個點,然後再依次用二叉排序樹方式插入當前點,再把該點旋轉到根部 這樣方便我們找前驅和後繼,否則需要中序遍歷整棵樹來確定 再在存在前驅和後繼的情況下尋找前驅和後繼。接下來就很...

營業額統計

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

營業額統計 Treap

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