BZOJ 5334--[Tjoi2018]数学计算(线段树)
5334: [Tjoi2018]数学计算
Time Limit: 10 Sec Memory Limit: 256 MB
Submit: 220 Solved: 147
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
10 1000000000
1 2
2 1
1 2
1 10
2 3
2 4
1 6
1 7
1 12
2 7
Sample Output
1
2
20
10
1
6
42
504
84
题目链接:
http://www.lydsy.com/JudgeOnline/problem.php?id=5334
Solution
都2018年了,居然还有省选出模板题的吗?
对询问建一颗线段树,直接维护。。。
代码
#include<iostream>
#include<cstdio>
#define LL long long
using namespace std;
const int N=1e5+50;
LL mod;
int n;
struct node{
int l,r;
LL sum;
}d[N<<2];
void build(int l,int r,int t){
d[t].l=l;d[t].r=r;d[t].sum=1;
if(l==r)return;
int mid=l+r>>1;
build(l,mid,t<<1);
build(mid+1,r,t<<1|1);
}
void update(int l,int t,LL val){
if(d[t].l==d[t].r){
d[t].sum=val%mod;
return;
}
if(l<=d[t<<1].r) update(l,t<<1,val);
else update(l,t<<1|1,val);
d[t].sum=d[t<<1].sum*d[t<<1|1].sum%mod;
}
int main(){
int T;scanf("%d",&T);
LL x;
int pos,op;
while(T--){
scanf("%d%lld",&n,&mod);
build(1,n,1);
for(int i=1;i<=n;++i){
scanf("%d",&op);
if(op==1){
scanf("%lld",&x);
update(i,1,x);
}
else{
scanf("%d",&pos);
update(pos,1,1);
}
printf("%lld\n",d[1].sum);
}
}
return 0;
}
This passage is made by Iscream-2001.
BZOJ 5334--[Tjoi2018]数学计算(线段树)的更多相关文章
- 洛谷P4588 [TJOI2018]数学计算(线段树)
题意 题目链接 Sol TJOI怎么全是板子题 对时间开个线段树,然后就随便做了.... #include<bits/stdc++.h> using namespace std; cons ...
- BZOJ5334:[TJOI2018]数学计算(线段树)
Description 小豆现在有一个数x,初始值为1. 小豆有Q次操作,操作有两种类型: 1 m: x = x * m ,输出 x%mod; 2 pos: x = x / 第pos次操作所乘 ...
- [TJOI2018]数学计算 线段树
---题面--- 题解: ,,,考场上看到这题,没想到竟然是省选原题QAQ,考场上把它当数学题想了好久,因为不知道怎么处理有些数没有逆元的问题....知道这是线段树后恍然大悟. 首先可以一开始就建出一 ...
- BZOJ 5334: [Tjoi2018]数学计算
线段树裸题 难度在于认识到这个没法线性做 #include<cstdio> using namespace std; int n,mod,tr[400005]; void insert(i ...
- BZOJ5334: [Tjoi2018]数学计算
BZOJ5334: [Tjoi2018]数学计算 https://lydsy.com/JudgeOnline/problem.php?id=5334 分析: 线段树按时间分治即可. 代码: #incl ...
- [Tjoi2018]数学计算
[Tjoi2018]数学计算 BZOJ luogu 线段树分治 是不是想问为什么不暴力做? 模数没说是质数,所以不一定有逆元. 然后就是要每次build一下把线段树权值init成1, 博猪不知道为什么 ...
- [BZOJ 1483] [HNOI2009] 梦幻布丁 (线段树合并)
[BZOJ 1483] [HNOI2009] 梦幻布丁 (线段树合并) 题面 N个布丁摆成一行,进行M次操作.每次将某个颜色的布丁全部变成另一种颜色的,然后再询问当前一共有多少段颜色.例如颜色分别为1 ...
- [BZOJ 2653] middle(可持久化线段树+二分答案)
[BZOJ 2653] middle(可持久化线段树+二分答案) 题面 一个长度为n的序列a,设其排过序之后为b,其中位数定义为b[n/2],其中a,b从0开始标号,除法取下整. 给你一个长度为n的序 ...
- [BZOJ5334][TJOI2018]数学计算(exgcd/线段树)
模意义下除法若结果仍为整数的话,可以记录模数的所有质因子,计算这些质因子的次幂数,剩余的exgcd解决. $O(n\log n)$但有9的常数(1e9内的数最多有9个不同的质因子),T了. #incl ...
- BZOJ5334 [TJOI2018] 数学计算 【线段树分治】
题目分析: 大概是考场上的签到题.首先mod不是质数,所以不能求逆元.注意到有加入操作和删除操作.一个很典型的想法就是线段树分治.建立时间线段树然后只更改有影响的节点,最后把所有标记下传.时间复杂度是 ...
随机推荐
- 品味性能之道<六>:图形化SQL分析工具
在上一章里,重点分享了命令行SQL分析工具的使用方法.在本章将重点分享PL/SQL的SQL分析工具. 一.如何打开PL/SQL执行计划 开启PL/SQL这工具,推荐如下方法: 点击 ...
- Response.Redirect原理图解
- maven 无法下载私服jar包,如刚上传的第三方jar包无法下载。。
原因可能是: 在你下载该文件时 ,的确 私服上没有该文件. 但是maven会在本地仓库建立文件夹路径,并且今天不会再去私服下载. 即使你现在上传3rd jar ,也不会去下载,导致一直找不到jar.. ...
- 使用JDBC连接MySql时出现:The server time zone value '�й���ʱ��' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration
在连接字符串后面加上?serverTimezone=UTC 其中UTC是统一标准世界时间. 完整的连接字符串示例:jdbc:mysql://localhost:3306/test?serverTime ...
- Android 在一个程序中启动另一个程序(包名,或者类名)
http://hi.baidu.com/xiaofanqing/item/6fd724f7c5bb6dce531c26b7 Android 开发有时需要在一个应用中启动另一个应用,比如Launcher ...
- 2018.09.02 Atcoder Regular Contest 102简要题解
比赛传送门 T1 Triangular Relationship 分析之后发现有两种情况: 1. n为奇数,那么所有数都是k的倍数. 2. n为偶数,那么所有数都是k/2的倍数. 然后就可以愉快A题了 ...
- 27. Green Building 绿色建筑
27. Green Building 绿色建筑 ①When we think of green buildings,we tend to think of new ones-the kind of h ...
- Netty学习第五节实例进一步学习
概念理解: Netty是基于NIO的框架 传统IO与NIO的区别: 1.传统IO会造成阻塞点: 2.单一的客户端处理消息 解决阻塞问题:建立线程池,达到收到一个消息就建立一个 ...
- MySQL终端下常用命令
一:控制类命令 1.show variables like "%datadir%";显示注册在variables中(一个注册表key-value的格式存储数据)key能匹配%dat ...
- Quartus调用MOdelsim仿真过程
quarutsii调用modelsim实际是相对比较简单的.因为不需要选择要编译的库. 调用前的设置:设置调用的工具,也就是下面的Tool name,选择仿真语言,在这里选择为Verilog HDL, ...