【題意】給定含有n個0的的數列。
1.區間加值
2.區間翻轉
3.區間求最大值
【演算法】平衡樹(fhq-treap)
需要特別注意的是:
1.使0點對全域性無影響並全程保持(例如求max,t[0].mx=-inf)
2.平衡樹和線段樹的上傳區別在於要考慮本身這個點。
#include#includeview code#include
using
namespace
std;
const
int maxn=100010
;struct treet[maxn*2
];int
st[maxn];
intn,m,root;
void down(int
k)
if(t[k].add)
}int max(int a,int b)
void up(int k)
void dfs(int
k)void
build();
while(top&&t[st[top]].rnd>t[i].rnd)
t[st[top]].r=i;
st[++top]=i;
}dfs(st[
1]);
t[0].r=0
; t[
0].mx=-0x3f3f3f3f;//
make 0 no influence
root=st[1];}
int merge(int a,int
b)
else
}void split(int k,int &l,int &r,int
x)
else
up(k);
}void plus(int l,int r,int
x)void turn(int l,int
r)int ask(int l,int
r)int
main()
else
if(k==2
)turn(l,r);
else printf("
%d\n
",ask(l,r));
}return0;
}
bzoj 1251 序列終結者
題目在這裡 這應該是splay裸題了吧。對於每個節點儲存5個值,size,max,flag,lazy,val 分別表示這個節點的子樹大小,子樹的最大值,子樹是否有打過翻轉標記,子樹的增加的值,前面的所有都包括這個節點它自己 以及這個節點的當前值。對於一段區間 l,r 的詢問 修改,只需把l 1這個節...
bzoj1251 序列終結者
time limit 20 sec memory limit 162 mb submit 2971 solved 1188 submit status discuss 網上有許多題,就是給定乙個序列,要你支援幾種操作 a b c d。一看另一道題,又是乙個序列 要支援幾種操作 d c b a。尤其是...
BZOJ 1251 序列終結者
網上有許多題,就是給定乙個序列,要你支援幾種操作 a b c d。一看另一道題,又是乙個序列,要支援幾種操作 d c b a。尤其是我們這裡的某人,出模擬試題,居然還出了一道這樣的,真是沒技術含量 這樣,我也出一道題,我出這一道的目的是為了讓大家以後做這種題目有乙個 庫 可以依靠,沒有什麼其他的意思...