P2042 NOI2005 維護數列

2022-03-01 05:37:21 字數 1069 閱讀 6206

超級噁心的pushdown

昏天黑地的調

讓我想起了我那前幾個月的線段樹2

這噁心的一道題終於過了

太多錯誤,簡直說不過來

pushup

pushdown

主要就是這倆不太清晰,亂pushdown

其他的寫的還沒啥毛病(能看出來)

#include #include #include #include #include #define for(i,a,b) for(int i=a;i<=b;++i)

using namespace std;

const int maxn=5e5+7;

const int inf=0x3f3f3f3f;

typedef long long ll;

int read()

int n,m,rt,cnt;

int init[maxn];

stackq;//**廢棄陣列

struct node

void iit(int x)

}e[maxn];

void pushup(int a)

void down_1(int a,int ad)

void down_2(int a)

void pushdown(int a)

if(e[a].lazy_chenzhen!=inf)

e[a].lazy_chenzhen=inf;

e[a].lazy_fanzhuan=0;

}int merge(int x,int y)

void dfs(int now)

int main()

else

if(s=="delete")

else

if(s=="make-same")

else

if(s=="reverse")

else

if(s=="get-sum")

else

if(s=="max-sum")

}return 0;

}

P2042 NOI2005 維護數列

這道題看到什麼維護序列的,肯定就是用資料結構的。這個東西叫你做下面的事情 首先確定用什麼資料結構。看到翻轉,二話不說就用splay。第乙個操作 在第posi位後加入tot個數字。我們就把這一段數字建出乙個子splay。用類似線段樹的建樹方式解決掉,比乙個乙個加入的建樹方式快,常數小。然後split出...

P2042 NOI2005 維護數列 平衡樹

最大序列和小白逛公園做過 區間修改的優先順序高於區間翻轉的優先順序 之前有題01串翻轉 序列維護平衡樹 平衡樹維護的是下標 因此中序遍歷就是原序列 每個結點維護的都是結點 不像線段樹可以維護區間 所以build 的操作有一些不一樣 這題還卡空間 所以要弄乙個簡單的 操作 注意up的順序 必須從下到上...

洛谷 P2042 NOI2005 維護數列

一直在想要做這道題,但是被那個碩大的splay標籤壓垮了 好了,切入正題 這道題應該是我第二次用splay來維護區間問題 我還是太菜了qaq 其實思路也很簡單,就是以每乙個位置的下標來進行維護,然後其實就是跟權值樹是一模一樣的了 然後再具體說一下 為了保證效率,像線段樹和文藝平衡樹一樣,我們可以維護...