題意:給出序列a,a[i]的貢獻為:min(abs(a[i]-a[j])) (j=1..i-1)
n<=3e4,a[i]<=1e6,求出總貢獻?
當計算a[i]貢獻時 找前面第乙個比它大的,最後乙個比它小的? 用set維護.
或者建立splay,中序遍歷是遞增的,把x旋轉到根,從根開始找x左子樹最右邊的,x右子樹最左邊的即可.
splay模板參考
#include using namespace std;
const int n=5e5+20;
const int inf=0x3f3f3f3f;
struct nodet[n];
int a,tmp,x1,x2,ans;
int n,root,tot;
void sc(int x,int y,int z)
bool d(int x)//x是左孩子還是右孩子.
void rot(int x)
void splay(int x,int fa)
if(d(x)==d(t[x].f))
else
rot(x),rot(x); }}
int get(int x,int s)
return tmp;
}void insert(int y)
int x=root,z;
while(x)
{ z=x;
if(y
bzoj1588營業額統計
treap一發,每次尋找最接近的兩個以前的點計算即可,聽同學吐槽我的 風格很像黃學長,恩沒錯我是學習他的 風格的 include include include include include define n 50005 define inf 10000000 using namespace st...
bzoj1588營業額統計
description 營業額統計 tiger最近被公司公升任為營業部經理,他上任後接受公司交給的第一項任務便是統計並分析公司成立以來的營業情況。tiger拿出了公司的賬本,賬本上記錄了公司成立以來每天的營業額。分析營業情況是一項相當複雜的工作。由於節假日,大減價或者是其他情況的時候,營業額會出現一...
bzoj1588 營業額統計
2014年3月28日 5,309 3營業額統計 tiger最近被公司公升任為營業部經理,他上任後接受公司交給的第一項任務便是統計並分析公司成立以來的營業情況。tiger拿出了公司的賬本,賬本上記錄了公司成立以來每天的營業額。分析營業情況是一項相當複雜的工作。由於節假日,大減價或者是其他情況的時候,營...