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不是质数,所以不能求逆元.注意到有加入操作和删除操作.一个很典型的想法就是线段树分治.建立时间线段树然后只更改有影响的节点,最后把所有标记下传.时间复杂度是 ...
随机推荐
- pycharm中的常用快捷键
查找 Ctrl + F 替换 Ctrl + R 注释 Ctrl + / 去掉注释 Ctrl + / Function Shortcut Use this shortcut to... Clos ...
- js点击添加
1.点击变色 <div id="dd" style="width:100px;height: 100px;background-color: #ccc"& ...
- Debian use sudo
刚安装好的Debian默认还没有sudo功能.1.安装sudo# apt-get install sudo2.编辑 /etc/sudoers ,添加如下行# visudoroot ALL=(ALL:A ...
- 2018.07.04 BZOJ1336&&1337: Balkan2002Alien最小圆覆盖
1336: [Balkan2002]Alien最小圆覆盖 1337: 最小圆覆盖 Time Limit: 1 Sec Memory Limit: 162 MBSec Special Judge Des ...
- 2018.07.12 atcoder Choosing Points(数学分析好题)
传送门 一句话题意:给出n,d1,d2" role="presentation" style="position: relative;">n,d ...
- yii2 beforeAction 重定向问题
不跳转代码:return $this->redirect('http://www.yiichina.com/'); 跳转代码:return $this->redirect('http:// ...
- java,arduino,C#之间的一些编码转换
1.C#-> Encoding.UTF8.GetBytes( "abc中") ->[97,98,99,228,184,173] java->byte[] bs= ...
- 【Unity】1.2 HelloWorld--测试桌面和Android游戏能否正常运行
分类:Unity.C#.VS2015 创建日期:2016-03-23 一.简介 这一节先搞一个最简单的Unity游戏,目的是为了验证Unity的桌面游戏开发环境和Android游戏开发环境是否有问题. ...
- StackView实现叠加在一起的图片循环移动像循环队列一样
MainActivity.java public class MainActivity extends Activity { StackView stackView; int[] imageIds ...
- python 实现排列组合
1.python语言简单.方便,其内部可以快速实现排列组合算法,下面做简单介绍. 2.一个列表数据任意组合 2.1主要是利用自带的库 #_*_ coding:utf-8 _*_ #__author__ ...