5334: [Tjoi2018]数学计算

Time Limit: 10 Sec  Memory Limit: 256 MB
Submit: 220  Solved: 147
[Submit][Status][Discuss]

Description

小豆现在有一个数x,初始值为1. 小豆有Q次操作,操作有两种类型: 
1 m: x = x  *  m ,输出 x%mod;
2 pos: x = x /  第pos次操作所乘的数(保证第pos次操作一定为类型1,对于每一个类型1 的操作至多会被除一次),输出x%mod
 

Input

一共有t组输入(t ≤ 5)
对于每一组输入,第一行是两个数字Q, mod(Q ≤ 100000, mod  ≤ 1000000000); 
接下来Q行,每一行为操作类型op,操作编号或所乘的数字m(保证所有的输入都是合法的).
1 ≤ Q ≤ 100000
 

Output

对于每一个操作,输出一行,包含操作执行后的x%mod的值
 

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

2
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]数学计算(线段树)的更多相关文章

  1. 洛谷P4588 [TJOI2018]数学计算(线段树)

    题意 题目链接 Sol TJOI怎么全是板子题 对时间开个线段树,然后就随便做了.... #include<bits/stdc++.h> using namespace std; cons ...

  2. BZOJ5334:[TJOI2018]数学计算(线段树)

    Description 小豆现在有一个数x,初始值为1. 小豆有Q次操作,操作有两种类型:  1 m: x = x  *  m ,输出 x%mod; 2 pos: x = x /  第pos次操作所乘 ...

  3. [TJOI2018]数学计算 线段树

    ---题面--- 题解: ,,,考场上看到这题,没想到竟然是省选原题QAQ,考场上把它当数学题想了好久,因为不知道怎么处理有些数没有逆元的问题....知道这是线段树后恍然大悟. 首先可以一开始就建出一 ...

  4. BZOJ 5334: [Tjoi2018]数学计算

    线段树裸题 难度在于认识到这个没法线性做 #include<cstdio> using namespace std; int n,mod,tr[400005]; void insert(i ...

  5. BZOJ5334: [Tjoi2018]数学计算

    BZOJ5334: [Tjoi2018]数学计算 https://lydsy.com/JudgeOnline/problem.php?id=5334 分析: 线段树按时间分治即可. 代码: #incl ...

  6. [Tjoi2018]数学计算

    [Tjoi2018]数学计算 BZOJ luogu 线段树分治 是不是想问为什么不暴力做? 模数没说是质数,所以不一定有逆元. 然后就是要每次build一下把线段树权值init成1, 博猪不知道为什么 ...

  7. [BZOJ 1483] [HNOI2009] 梦幻布丁 (线段树合并)

    [BZOJ 1483] [HNOI2009] 梦幻布丁 (线段树合并) 题面 N个布丁摆成一行,进行M次操作.每次将某个颜色的布丁全部变成另一种颜色的,然后再询问当前一共有多少段颜色.例如颜色分别为1 ...

  8. [BZOJ 2653] middle(可持久化线段树+二分答案)

    [BZOJ 2653] middle(可持久化线段树+二分答案) 题面 一个长度为n的序列a,设其排过序之后为b,其中位数定义为b[n/2],其中a,b从0开始标号,除法取下整. 给你一个长度为n的序 ...

  9. [BZOJ5334][TJOI2018]数学计算(exgcd/线段树)

    模意义下除法若结果仍为整数的话,可以记录模数的所有质因子,计算这些质因子的次幂数,剩余的exgcd解决. $O(n\log n)$但有9的常数(1e9内的数最多有9个不同的质因子),T了. #incl ...

  10. BZOJ5334 [TJOI2018] 数学计算 【线段树分治】

    题目分析: 大概是考场上的签到题.首先mod不是质数,所以不能求逆元.注意到有加入操作和删除操作.一个很典型的想法就是线段树分治.建立时间线段树然后只更改有影响的节点,最后把所有标记下传.时间复杂度是 ...

随机推荐

  1. Halcon的二维码解码步骤和解码技巧

    一.二维码简介 1 . 类型多样,常见的有QR Code二维码. Data Matrix二维码等. 2.高密度编码,信息容量大. 3.容错能力强,具有纠错功能:二维码因穿孔.污损等引起局部损坏时,照样 ...

  2. linux中的hosts文件

    1.主机名: 无论在局域网还是INTERNET上,每台主机都有一个IP地址,是为了区分此台主机和彼台主机,也就是说IP地址就是主机的门牌号. 公网:IP地址不方便记忆,所以又有了域名.域名只是在公网( ...

  3. Java8 改进的匿名内部类:

    1.匿名内部类适合创建那种只需要一次使用的类 2.匿名内部类定义格式: new 实现接口() | 父类构造器(实参列表){ //匿名内部类类体部分 } 3.从上面定义格式可以看出,匿名内部类必须实现一 ...

  4. 详解html中的元老级元素:“table”

    table标签历史悠久,在互联网出现的早期,web网页的排版主要是靠table表格,对web网页做出了不可磨灭的贡献,直到后来层叠样式表:CSS的发展完善,再配合空元素DIV,才有了今天绚丽多彩的网页 ...

  5. 彻底关闭win10的自动更新,一定要坚持看到最后一页

    https://jingyan.baidu.com/article/9faa7231e7b78b473c28cbb6.html 是否好使我还在测试,不好使的话,再跟新 2018-05-20 今天电脑又 ...

  6. 541. Reverse String II

    static int wing=[]() { std::ios::sync_with_stdio(false); cin.tie(NULL); ; }(); class Solution { publ ...

  7. 32. My Experiences in the Factories 我在工厂的经历

    32. My Experiences in the Factories 我在工厂的经历 ① I've worked in the factories surrounding my hometown e ...

  8. Criteria查询

    1.Criteria表达式 Criteria c=session.createCriteria(User.class); List result=c.list(); Iterator it=resul ...

  9. 几个经典的数学库之一学习---VCGlib(2)

    几个经典的数学库之一学习---VCGlib(2) 1. Optional Component(可选的组件) 有许多Vertex和Face的属性并不是一直都是必要的,如Face-Face的邻接关系.VC ...

  10. SoC FPGA JTAG电路设计 要点

    JTAG协议制定了一种边界扫描的规范,边界扫描架构提供了有效的测试布局紧凑的PCB板上元件的能力.边界扫描可以在不使用物理测试探针的情况下测试引脚连接,并在器件正常工作的过程中捕获运行数据. SoC ...