NOI2005 維護數列

2022-07-30 22:39:18 字數 1510 閱讀 7086

這題怕是會記憶一輩子吧qwq

調了大概一天一夜233333

wa了整整一面之後,然後發現l打成r了

特別高興,交上去之後洛谷過了,然後bzojtle了

然後又找了很長很長時間,以為那裡死迴圈了。。。

等後一天頹了很長很長時間後,鬼使神差地點開了discuss,然後發現有大佬跟我一樣t了

然後抱著一種死馬當活馬醫的心態改小了陣列範圍,然後。。。

然後就a了。。。幼小

#include#define maxn 5000010

using namespace std;

const int inf=0x3f3f3f3f;

int k,sum1,val;

char ch[10];

int n,m,rt,cnt;

int a[maxn],num[maxn],fa[maxn],f[maxn][2];

int sum[maxn],size[maxn],v[maxn],mx[maxn],l[maxn],r[maxn];

bool tf[maxn],pf[maxn];

queueq;

// inline int read()

inline void update(int x)

inline void s1(int t,int w,int x)

inline void s2(int t)

inline void s3(int t,int x)

inline void s4(int x)

else

}if(pf[x])

}inline void rotate(int x,int &k)

inline void splay(int x,int &k)

rotate(x,k);

}}inline int find (int x,int rk)

inline void clean(int x)

inline void rec(int x)

inline int split(int t,int sum1)

inline void query(int k,int sum1)

inline void modify(int k,int sum1,int val)

inline void pfer(int k,int sum1)

}inline void erase(int k,int sum1)

inline void build(int t,int w,int k)

if (t=k]=now;

}inline void insert(int k,int sum1)

void liblibal(int x)

int main()

}if(ch[0]=='r')

pfer(k,sum1);

if(ch[0]=='g')

query(k,sum1);

//liblibal(rt);

}return 0;

}

noi2005維護數列

請寫乙個程式,要求維護乙個數列,支援以下 6 種操作 請注意,格式欄 中的下劃線 表示實際輸入檔案中的空格 操作編號 輸入檔案中的格式 說明1.插入 insert posi tot c1 c2 c tot 在當前數列的第 posi 個數字後插入 tot 個數字 c1,c2,c tot 若在數列首插 ...

NOI2005 維護數列

陳年老題。我就 碼了4k多。主要就是用splay,然後處理區間上的東西 區間反轉就和模板一樣,但是要記得反轉leftmax和rightmax 區間賦值就把那個區間提取出來,然後給子樹根打個same標記,表示下面的全一樣。區間求最大子段和就和線段樹的套路一樣。區間插入就先弄好一顆平衡樹,然後把原平衡樹...

NOI2005 維護數列

傳送門 我還是沒有逃過在這道題上debug好久的命運 我是使用 fhq treap 來做的這道題。寫的時候寫的挺爽的 調的時候真難受。首先我們先來說說咋做吧。前5個操作對於 fhq treap 來說不在話下,只要多打兩個標記就可以了。但是如何求最大子段和?於是乎我們再打三個標記來維護它 霧 然後我們...