题目链接

洛谷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; i <= (n); i++)
#define mp(a,b) make_pair<int,int>(a,b)
#define cls(s) memset(s,0,sizeof(s))
#define cp pair<int,int>
#define LL long long int
#define ls (u << 1)
#define rs (u << 1 | 1)
using namespace std;
const int maxn = 100005,maxm = 100005,INF = 1000000000;
inline LL read(){
LL out = 0,flag = 1; char c = getchar();
while (c < 48 || c > 57){if (c == '-') flag = -1; c = getchar();}
while (c >= 48 && c <= 57){out = (out << 3) + (out << 1) + c - 48; c = getchar();}
return out * flag;
}
int Q,P;
LL val[maxn << 2];
void build(int u,int l,int r){
if (l == r){val[u] = 1; return;}
int mid = l + r >> 1;
build(ls,l,mid);
build(rs,mid + 1,r);
val[u] = 1ll * val[ls] * val[rs] % P;
}
void modify(int u,int l,int r,int pos,LL v){
if (l == r){val[u] = v; return;}
int mid = l + r >> 1;
if (mid >= pos) modify(ls,l,mid,pos,v);
else modify(rs,mid + 1,r,pos,v);
val[u] = 1ll * val[ls] * val[rs] % P;
}
LL query(int u,int l,int r,int L,int R){
if (l >= L && r <= R) return val[u];
int mid = l + r >> 1;
if (mid >= R) return query(ls,l,mid,L,R);
if (mid < L) return query(rs,mid + 1,r,L,R);
return 1ll * query(ls,l,mid,L,R) * query(rs,mid + 1,r,L,R) % P;
}
int main(){
int T = read();
while (T--){
Q = read(); P = read(); LL opt,v;
build(1,1,Q);
REP(i,Q){
opt = read(); v = read();
if (opt & 1) modify(1,1,Q,i,v % P);
else modify(1,1,Q,v,1);
printf("%lld\n",query(1,1,Q,1,i));
}
}
return 0;
}

最新文章

  1. 在Linux上运行ASP.NET vNext
  2. HTML文档、javascript脚本的加载与解析
  3. php-长文章分页函数
  4. jquery mobile常用的data-role类型 data-icon data-iconpos
  5. JQ 特效下拉列表 写出与css一样的效果
  6. C#实现IDispose接口
  7. FreeSWITCH一些需求应对
  8. Ubuntu下使用Vi时方向键变乱码 退格键不能使用的解决方法
  9. [ACM] HDU 2295 Radar (二分法+DLX 重复覆盖)
  10. Elasticsearch教程
  11. Android Paint Xfermode 学习小结
  12. &lt;转载&gt;Android性能优化之HashMap,ArrayMap和SparseArray
  13. 3.24网络攻防选拔题部分write up
  14. .Net Core Cors中间件解析
  15. Python——递归、二分查找算法
  16. js面试题——找到数组中的重复元素并判断重复次数且输出重复元素
  17. HTTP请求流程(二)----Telnet模拟HTTP请求
  18. javascript与java的相互调用,纯java的javascript引擎rhino(转载)
  19. 【D3.js】Focus + Context 折线图
  20. zabbix客户端安装shadowscoks客户端监控访问google网站

热门文章

  1. Docker(二):Hello World
  2. Spring笔记2
  3. html5 获取和设置data-*属性值的四种方法讲解
  4. Python3爬虫(七) 解析库的使用之pyquery
  5. ffplay使用笔记
  6. @Transactional spring 事务失效(转载)
  7. fastlane自动化打包ipa并发布到firim或者蒲公英
  8. 「日常训练」Our Tanya is Crying Out Loud (CFR466D2B)
  9. 常用的python模块及安装方法
  10. BZOJ 4595 SHOI2015 激光发生器 射线,线段,偏转