原题传送门 这题是线段树的模板题 显而易见,直接模拟是不好模拟的(取模后就不好再除了) 我们按照时间来建一颗线段树 线段树初始值都为1,用来维护乘积 第一种操作就在当前时间所对应的节点上把乘数改成m 第二种操作就是把第pos个节点的乘数该回1 每次询问的答案就是线段树根节点维护的数值(pushup时要取模) #include <bits/stdc++.h> #define N 100005 #define ll long long #define getchar nc using namesp…
题目链接 洛谷P4588 题解 用线段树维护即可 #include<algorithm> #include<iostream> #include<cstring> #include<cstdio> #include<cmath> #include<map> #define Redge(u) for (int k = h[u],to; k; k = ed[k].nxt) #define REP(i,n) for (int i = 1;…
题目大意:有一个数$x$和取模的数$mod$,初始为$1$,有两个操作: $m:x=x\times m$并输出$x\% mod$ $pos:x=x/第pos次操作乘的数$(保证合法),并输出$x\%mod$ 题解:对时间建一棵线段树,记录区间积就可以了 卡点:无 C++ Code: #include <cstdio> #define maxn 100010 int Tim, n, mod; long long V[maxn << 2]; void build(int rt, int…
题意 题目链接 Sol TJOI怎么全是板子题 对时间开个线段树,然后就随便做了.... #include<bits/stdc++.h> using namespace std; const int MAXN = 1e6 + 10; int mod; template<typename A, typename B> inline A mul(A x, B y) { return 1ll * x * y % mod; } inline int read() { char c = ge…
用线段树维护操作序列,叶子结点存要乘的数,非叶子结点存区间乘积,每次输出tr[1] 就是答案. 1 #include<bits/stdc++.h> 2 #define ll long long 3 #define lson k << 1, l, mid 4 #define rson k << 1 | 1, mid + 1, r 5 #define ls k << 1 6 #define rs k << 1 | 1 7 #define mid ((…
[Tjoi2018]数学计算 BZOJ luogu 线段树分治 是不是想问为什么不暴力做? 模数没说是质数,所以不一定有逆元. 然后就是要每次build一下把线段树权值init成1, 博猪不知道为什么for就WA,build就过了(用RE自动机查了下,发现还是有0...) for(int i=1;i<=(_<<1);i++)s[i]=1; 有知道的一定在评论告诉我 其他的就是线段树分治的板子了罢 到写这篇blog的时候博猪还是luogu跑得最快的,BZOJrk12嘻嘻 #define l…
BZOJ5334: [Tjoi2018]数学计算 https://lydsy.com/JudgeOnline/problem.php?id=5334 分析: 线段树按时间分治即可. 代码: #include <cstdio> #include <cstring> #include <algorithm> #include <cstdlib> using namespace std; #define N 100050 #define ls p<<1…
题目描述 小豆现在有一个数\(x\),初始值为\(1\).小豆有\(Q\)次操作,操作有两种类型: \(1\;m\):\(x=x\times m\)输出\(x\%mod\); \(2\;pos\):\(x= x/\)第\(pos\)次操作所乘的数(保证第\(pos\)次操作一定为类型\(1\),对于每一个类型\(1\)的操作至多会被除一次)输出\(x\%mod\); 输入格式 一共有\(t\)组输入(\(t\leq5\)); 对于每一组输入,第一 行是两个数字\(Q,mod\)(\(Q\leq1…
https://www.lydsy.com/JudgeOnline/problem.php?id=5334 小豆现在有一个数x,初始值为1. 小豆有Q次操作,操作有两种类型:  1 m: x = x  *  m ,输出 x%mod; 2 pos: x = x /  第pos次操作所乘的数(保证第pos次操作一定为类型1,对于每一个类型1 的操作至多会被除一次),输出x%mod 都懒得写题解了……就对着时间建一个线段树,区间维护乘积即可. 真·大水题. #include<cmath> #incl…
题目 小豆现在有一个数 \(x\) ,初始值为 \(1\) . 小豆有 \(Q\) 次操作,操作有两种类型: \(m\): \(x=x×m\),输出 \(x\mod M\) : \(pos\): \(x=x/\) 第 \(pos\) 次操作所乘的数(保证第 \(pos\) 次操作一定为类型 \(1\),对于每一个类型 \(1\) 的操作至多会被除一次),输出 \(x\mod M\) . 输入格式 一共有 \(t\) 组输入. 对于每一组输入,第一行是两个数字 \(Q,M\) . 接下来 \(Q\…