bzoj5334(線段樹裸題)

2021-08-21 15:16:15 字數 1473 閱讀 3700

description

小豆現在有乙個數x,初始值為1. 小豆有q次操作,操作有兩種型別:

1 m: x = x * m ,輸出 x%mod;

2 pos: x = x / 第pos次操作所乘的數(保證第pos次操作一定為型別1,對於每乙個型別1 的操作至多會被除一次),輸出x%mod

input

一共有t組輸入(t ≤ 5)

對於每一組輸入,第一行是兩個數字q, mod(q ≤ 100000, mod ≤ 1000000000);

接下來q行,每一行為操作型別op,操作編號或所乘的數字m(保證所有的輸入都是合法的).

1 ≤ q ≤ 100000

output

對於每乙個操作,輸出一行,包含操作執行後的x%mod的值

sample input

1 10 1000000000

1 2

2 1

1 2

1 10

2 3

2 4

1 6

1 7

1 12

2 7

sample output

2 1

2 20

10 1

6 42

504

84裸的線段樹題。

只要你發現這道題不是線性的做法,你會線段樹那這道題就水水水水了。

暴力維護一下區間的乘積即可。

#include

using namespace std;

#define ll long long

int q , mod ;

int t1 , tot;

ll tr[401000];

intread()

while( c >= '0' && c <= '9' ) sum = sum * 10 + c - 48 , c = getchar();

if(flag) return sum;

else

return -sum;

} void make(int root,int l,int r,int

pos,int v)

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

pos<= mid ? make(root*2,l,mid,pos,v) : make(root*2+1,mid + 1,r,pos,v);

tr[root] = tr[root*2] * tr[root * 2 + 1] % mod;

return;

}void build(int root,int l,int r)

void work()

return;

}int main()

樹剖裸題 BZOJ1036 樹的統計

1 include2 include3 include4 include5 define foru i,x,y for int i x i y i 6 define clr a memset a,0,sizeof a 7using namespace std 8const int n 100010 ...

bzoj1012(線段樹模板題)

題目讀了三遍才讀懂,對於蒟蒻來說,看上去很難得樣子,實際就是線段樹的單點更新,然後求區間最值,無奈之前還想著怎麼建樹插進去。結果re n次,感覺自己水的一匹,唉 做題效率極低。真是被自己蠢哭了 include include include include include pragma warnin...

線段樹成段更新裸題POJ3468

注意事項 1.記住要清除標記 2.查詢時要下放標記,但沒必要向上更新 include define lson l,m,rt 1 define rson m 1,r,rt 1 1 define maxn 111111 define ll long long ll sum maxn 2 ll mark ...