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 ...