Bzoj1588 Hnoi2002營業額統計

2022-08-15 05:00:10 字數 1237 閱讀 4343

平衡樹練習

每次插入乙個數判斷是否重複,重複則返回0,否則選出與它差最小的數返回差的絕對值

最小差必定是左子樹中最大點或右子樹中最小點或其祖先,找找就可以了

**:

#include#define maxn 300005

#define maxm 3005

#define inf 10000000000000ll

#define mod 998244353

#define ll long long

using

namespace

std;

inline

intread()

while(c<='

9'&&c>='

0')

return ret*f;

}inline ll _abs(ll a)

intn;

struct

nodex[maxn];

struct

treap

inline

void rotate(int num,int

p) x[num].son[p]=pa;x[num].par=x[pa].par;x[pa].par=num;

}int insert(int

v) pre=vl:r;

if(!x[now].son[pre])

now=x[now].son[pre];

}now=cnt;

while(true

) le=x[now].son[l];ri=x[now].son[r];

while(x[le].son[r]) le=x[le].son[r];

while(x[ri].son[l]) ri=x[ri].son[l];

le=le?x[now].v-x[le].v:inf;ri=ri?x[ri].v-x[now].v:inf;

now=x[now].par;

if(le==ri&&le==inf&&now==root) return

x[cnt].v;

le=lele:ri;

while

(now)

return

le; }

};int

main()

printf(

"%lld\n

",ret);

return0;

}

bzoj1588 HNOI2002 營業額統計

給出n個數,求每個數和它前面每個數的差值絕對值的最小值之和。n 32767 很顯然求前驅後驅。可以離散化後用權值線段樹二分找。也可以直接用splay找。或者還可以離線排完序用雙向鍊錶找。你喜歡就好嘍。orz bzoj上rank1 0ms踩所有人 include include include def...

BZOJ 1588 HNOI2002 營業額統計

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

BZOJ 1588 HNOI2002 營業額統計

treap的入門題,雖然在splay的 裡看到過這題。遇到2個奇葩問題 1 bzoj 上用srand time null 會re 2 這題的資料不完整 time limit 5 sec memory limit 162 mb submit 6820 solved 2250 submit status...