给出有多少次操作 和MOD 初始值为1
操作1 y 表示乘上y
操作2 y 表示除以第 y次操作乘的那个数

线段树的叶子结点i 表示 第i次操作乘的数 将1替换成y
遇到操作2 就把第i个结点的值 替换成1
利用线段树的性质,对整个1~n的区间进行维护,每次输出sum[1]的值即可

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
Case #1:
2
1
2
20
10
1
6
42
504
84

 # include <iostream>
# include <cstdio>
# include <cstring>
# include <algorithm>
# include <string>
# include <cmath>
# include <queue>
# include <list>
# define LL long long
using namespace std ; const int maxn = ;
int MOD ; LL sum[maxn<<] ; //结点开4倍 void PushUP(int rt) //更新到父节点
{
sum[rt] = (sum[rt * ] * sum[rt * + ]) % MOD ; //rt 为当前结点 } void build(int l , int r , int rt) //构建线段树
{
if (l == r)
{
sum[rt] = ;
return ;
}
int m = (l + r) / ;
build(l , m , rt * ) ;
build(m + , r , rt * +) ;
PushUP(rt) ;
} void updata(int p , LL v , int l , int r , int rt)
{
if (l == r)
{
sum[rt] = v % MOD ;
return ;
}
int m = (l + r) / ;
if (p <= m)
updata(p , v , l , m , rt * ) ;
else
updata(p , v , m + , r , rt * + ) ;
PushUP(rt) ;
} int main()
{
//freopen("in.txt","r",stdin) ;
int T ;
scanf("%d" , &T) ;
int Case = ;
while(T--)
{
Case++ ;
int n ;
scanf("%d %d" , &n , &MOD) ;
build(,n,) ;
int i , op ;
LL y ;
printf("Case #%d:\n", Case);
for (i = ; i <= n ; i++)
{
scanf("%d %I64d" , &op , &y) ;
if (op == )
updata(i , y , , n , ) ;
if (op == )
updata(y , , , n , ) ;
printf("%I64d\n", sum[]);
}
}
return ;
}

最新文章

  1. Android Weekly Notes Issue #232
  2. Urimoo做试卷
  3. erlang ssl
  4. Yaf(Yet Another Framework)用户手册 yii框架手册
  5. mac os x10.10 安装thrift
  6. homework-05 大家一起玩游戏~
  7. tomcat 解析(一)-文件解析
  8. 图解如何用U盘重装系统
  9. Hbuilder开发移动App(1)
  10. Windows7 x64 编译Dlib库
  11. HTML学习笔记5:修饰符和特殊标签
  12. 关于HTTPS的简要内容
  13. git添加删除远程tag
  14. pdf.js插件使用记录,在线打开pdf
  15. macOS packages安装时的降级处理
  16. unity windowEditor平台下鼠标左键控制摄像机的视角
  17. 利用cwRsync客户端将Windows下文件同步到Linux
  18. netty如何知道连接已经关闭,socket心跳,双工?异步?
  19. 在ros功能包CMakeLists.txt中获取所在功能包的路径 便于添加第三方库的相对路径
  20. TZOJ 3663 最长路径(floyd)

热门文章

  1. Java基础-包(package)的声明与访问
  2. 路径名导致的异常:javax.imageio.IIOException: Can&#39;t read input file!
  3. java字节码文件 helloworld
  4. 6.redis的分布式锁
  5. [CQOI2009]DANCE跳舞(ISAP写法)
  6. Web API: Client: HttpClient Message Handlers
  7. wait&amp;waitpid状态值
  8. Asp.net 中,在服务端向客户端写脚本的常用方法
  9. Linux学习2-fork
  10. 点击搜索条件提交form表单