bzoj1500 NOI2005 維修數列

2022-05-19 11:38:36 字數 2047 閱讀 5216

輸入檔案的第1行包含兩個數n和m,n表示初始時數列中數的個數,m表示要進行的運算元目。第2行包含n個數字,描述初始時的數列。以下m行,每行一條命令,格式參見問題描述中的**。

對於輸入資料中的get-sum和max-sum操作,向輸出檔案依次列印結果,每個答案(數字)佔一行。

9 82 -6 3 5 1 -5 -3 6 3

get-sum 5 4

max-sum

insert 8 3 -5 7 2

delete 12 1

make-same 3 3 2

reverse 3 6

get-sum 5 4

max-sum

-110110

splay區間操作模板

毒瘤乙個,splay這個資料結構就夠有毒了,一遍必卡,得苦逼的慢慢debug

這題的資料範圍也有毒性,必須**被刪掉的數

否則mle

最大子串行啊什麼的,線段樹怎麼維護的就怎麼維護,反正這棵樹維護的是樹上的編號,而不是對應的值(這個不知道怎麼表述,學久了就理解了)

**(巨難寫,寫過最長**):

1 #include2 #include3 #include4 #include5

using

namespace

std;

6int

sz,root;

7int ch[800001][2],d[800001],v[800001],f[800001],size[800001],sum[800001],tot,mx[800001],lx[800001],rx[800001],id[800001],flag[800001];bool used[800001];8

intn,l,r,m;

9void read(int &x)

14 queues;

15 inline bool

get(int

x)16

19void update(int

x)20

29void pushdown(int

now)

3042

else

4347}48

if(used[now])

4955}56

void move(int now,int &k)

5769

void splay(int x,int &k)

7081

move(x,k);82}

83}84void build(int l,int r,int

fa)85

94else build(l,mid-1,mid),build(mid+1

,r,mid);

95 v[now]=d[mid];f[now]=last;update(now);

96 ch[last][mid>=fa]=now;97}

98int find(int k,int

x)99

105void rec(int

x)106

113void ins(int k,int

b)114

126void del(int l,int

r)127

134void change(int k,int b,int

num)

135144

intmain()

145165

if(p[3]=='

s')//

插入 166

read(a),read(b),ins(a,b);

167if(p[3]=='

l')//

刪除 168

172if(p[3]=='

k')//

修改 173

177if(p[3]=='

t')//

求和178

184if(p[3]=='

x')//

最大連續和

185 printf("

%d\n

",mx[root]);

186}

187 }

BZOJ1500 NOI2005 維修數列

description input 輸入檔案的第1行包含兩個數n和m,n表示初始時數列中數的個數,m表示要進行的運算元目。第2行包含n個數字,描述初始時的數列。以下m行,每行一條命令,格式參見問題描述中的 output 對於輸入資料中的get sum和max sum操作,向輸出檔案依次列印結果,每個...

bzoj1500 NOI2005 維修數列

splay鼻祖級的題目?霧。insert 把第pos個數 有哨兵節點 轉到root,把第pos 1個數轉到root的右兒子,然後對c建樹然後把這棵樹插到root右兒子的左兒子處 delete 把第pos個數轉到root,把第pos tot 1個數轉到root右兒子,刪掉root右兒子的左兒子 變成0...

BZOJ 1500 NOI2005 維修數列

輸入的第1 行包含兩個數n 和m m 20 000 n 表示初始時數列中數的個數,m表示要進行的運算元目。第2行包含n個數字,描述初始時的數列。以下m行,每行一條命令,格式參見問題描述中的 任何時刻數列中最多含有500 000個數,數列中任何乙個數字均在 1 000,1 000 內。插入的數字總數不...