超級噁心的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 其實思路也很簡單,就是以每乙個位置的下標來進行維護,然後其實就是跟權值樹是一模一樣的了 然後再具體說一下 為了保證效率,像線段樹和文藝平衡樹一樣,我們可以維護...