線段樹 單點修改 區間查詢 洛谷P4588

2021-10-05 05:44:30 字數 1574 閱讀 2542

想了半天 這個和線段樹什麼關係!!!

最後發現我就是豬豬

害就是個板子題

把每乙個葉子節點的值賦值為1

如果第m個是1 n 就把m這個點的值變為n

如果是2 n 就把n點的值變為1

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#if __cplusplus >= 201103l

#include

#include

#endif

#define ll long long

#define int long long

using

namespace std;

const

int inf =

0x3f3f3f3f

;int q,mod;

struct suttree[

400010];

void

build

(int l1,

int r1,

int x)

int mid=

(l1+r1)

>>1;

build

(l1,mid,x<<1)

;build

(mid+

1,r1,x<<1|

1); tree[x]

.sum=tree[x<<1]

.sum*tree[x<<1|

1].sum;

}void

update

(int l1,

int r1,

int pos,

int val,

int x)

int mid=

(l1+r1)

>>1;

if(mid>=pos)

update

(l1,mid,pos,val,x<<1)

;else

update

(mid+

1,r1,pos,val,x<<1|

1); tree[x]

.sum=

(tree[x<<1]

.sum*tree[x<<1|

1].sum)

%mod;

}int a[

100010];

signed

main()

else}}

return0;

}

線段樹單點修改區間查詢

這是一道模板題。給定數列 a 1 a 2 a n 你需要依次進行 qq 個操作,操作有兩類 1 i x 給定 i,x,將 a i 加上 x 2 l r 給定 l,r,求 ri la i 的值 換言之,求 a l a l 1 a r 的值 input 第一行包含 2 個正整數 n,q,表示數列長度和詢...

線段樹模板(單點修改 區間查詢)

1547 例 1 區間和 時間限制 1000 ms 記憶體限制 524288 kb 提交數 2072 通過數 639 題目描述 給定一數列,規定有兩種操作,一是修改某個元素,二是求區間的連續和。輸入 輸入資料第一行包含兩個正整數n,m n 100000,m 500000 以下是m行,每行有三個正整數...

I Hate It 線段樹 單點修改 區間查詢

time limit 9000 3000 ms j a others memory limit 32768 32768 k j a others total submission s 40034 accepted submission s 15898 很多學校流行一種比較的習慣。老師們很喜歡詢問,從...