線段樹動態開點區間加區間求和

2022-08-01 17:30:21 字數 1456 閱讀 7792

陝西師範大學第七屆程式設計競賽網路同步賽 h. 萬惡的柯怡

保證葉子節點被完整的覆蓋,需要開節點,就把左右兒子都開出來,其餘和普通線段樹一樣。

用結構體內部函式,記憶體不足,(第一次遇見本地問題不嚴重)不明嚼慄???

#include typedef long long ll;

const int n = 4000010;

using namespace std;

struct nodenode(ll c,ll d,int e,int f)

}t[n];

int cnt;

void newnode(int &x,ll sum)

void push_down(int p,ll l,ll r)

else

t[p].tag = 0;

}}ll ask(int p,ll l,ll r,ll l,ll r)

else if(mid < l)

else

}void push_up(int p)

void add(int p,ll l,ll r,ll l,ll r,ll x)

push_down(p,l,r);

ll mid = (l+r)>>1ll;

if(mid>=r)

else if(mid < l)

else

push_up(p);

}int main()

else

}return 0;

}

#include typedef long long ll;

const int n = 4000010;

using namespace std;

struct nodet[n];

int cnt;

void newnode(int &x,ll sum)

void push_down(int p,ll l,ll r)

else

t[p].tag = 0;

}}ll ask(int p,ll l,ll r,ll l,ll r)

else if(mid < l)

else

}void push_up(int p)

void add(int p,ll l,ll r,ll l,ll r,ll x)

push_down(p,l,r);

ll mid = (l+r)>>1ll;

if(mid>=r)

else if(mid < l)

else

push_up(p);

}int main()

}return 0;

}

線段樹 區間加區間乘

給出序列 a1,a2,an 0 ai 109 有關序列的四種操作 1.al,al 1,ar 1 l r n 加上 x 103 x 103 2.al,al 1,ar 1 l r n 乘上 x 103 x 103 3.al,al 1,ar 1 l r n 變成 x al,x al 1 x ar 103 ...

線段樹 區間求和

給定一數列,規定有兩種操作,一是修改某個元素,二是求區間的連續和。輸入資料第一行包含兩個正整數n,m n 100000,m 500000 以下是m行,每行有三個正整數k,a,b k 0或1,a,b n k 0時表示將a處數字加上b,k 1時表示詢問區間 a,b 內所有數的和。對於每個詢問輸出對應的答...

ZKW線段樹區間加區間取最值

本來以為是和zkw單點修改之類的簡單技巧,但是今天卡常的時候學習了一下發現有點離譜。rx tr x trx 表示max f ax max x max max maxfax maxx 也就是線段樹上乙個節點和他父親區間最大值的差分,我們現在可以知道乙個線段樹上乙個整區間的最大值就是他到根的和。那麼我們...