【TJOI 2018】数学计算
2024-08-30 18:24:27
【题目链接】
【算法】
线段树维护区间乘积
【代码】
#include<bits/stdc++.h>
using namespace std;
#define MAXQ 100010 struct SegmentTree
{
int l,r;
long long sum;
} Tree[MAXQ<<]; int T,i,q,op,pos;
long long p,m; inline void build(int index,int l,int r)
{
int mid;
Tree[index].l = l; Tree[index].r = r;
Tree[index].sum = ;
if (l == r) return;
mid = (l + r) >> ;
build(index<<,l,mid);
build(index<<|,mid+,r);
}
inline void update(int index)
{
Tree[index].sum = (Tree[index<<].sum * Tree[index<<|].sum) % p;
}
inline void modify(int index,int pos,long long val)
{
int mid;
if (Tree[index].l == Tree[index].r)
{
Tree[index].sum = val % p;
return;
}
mid = (Tree[index].l + Tree[index].r) >> ;
if (mid >= pos) modify(index<<,pos,val);
else modify(index<<|,pos,val);
update(index);
} int main()
{ scanf("%d",&T);
while (T--)
{
scanf("%d%d",&q,&p);
build(,,q);
for (i = ; i <= q; i++)
{
scanf("%d",&op);
if (op == )
{
scanf("%lld",&m);
modify(,i,m);
printf("%lld\n",Tree[].sum);
} else
{
scanf("%d",&pos);
modify(,pos,);
printf("%lld\n",Tree[].sum);
}
}
} return ; }
最新文章
- InetAddress类
- memcache 与 mencached扩展的区别
- Codeforces #369 div2 D.Directed Roads
- C#中SaveFileDialog 和OpenFileDialog 的用法
- Cassandra1.2文档学习(14)—— 事务和并发控制
- html5 飞船动画
- python写的屏保程序
- Android 电话自己主动接听和挂断具体解释
- 在容器中利用Nginx-proxy实现多域名的自动反向代理、免费SSL证书
- 用awk写递归
- sysstat -6.0.2 lib not install
- Android笔记: 实现手机震动效果
- Spring Cloud学习笔记-008
- 安装在类虚拟机crossover中的容器怎么进行的备份和恢复
- Android常用网络请求框架Volley Retrofit (okHttp)
- spring整合strus2的Hellowworld
- linux source code search
- 基于Arcface Android平台的人脸识别实现
- 将不同级别的logging 日志信息写入不同文件
- html标签的总结-重复