Codeforces Round #250 (Div. 1) D. The Child and Sequence
4 seconds
256 megabytes
standard input
standard output
At the children's day, the child came to Picks's house, and messed his house up. Picks was angry at him. A lot of important things were lost, in particular the favorite sequence of Picks.
Fortunately, Picks remembers how to repair the sequence. Initially he should create an integer array a[1], a[2], ..., a[n]. Then
he should perform a sequence of m operations. An operation can be one of the following:
- Print operation l, r. Picks should write down the value of
. - Modulo operation l, r, x. Picks should perform assignment a[i] = a[i] mod x for
each i (l ≤ i ≤ r). - Set operation k, x. Picks should set the value of a[k] to x (in
other words perform an assignment a[k] = x).
Can you help Picks to perform the whole sequence of operations?
The first line of input contains two integer: n, m (1 ≤ n, m ≤ 105).
The second line contains n integers, separated by space:a[1], a[2], ..., a[n] (1 ≤ a[i] ≤ 109) —
initial value of array elements.
Each of the next m lines begins with a number type
.
- If type = 1, there will be two integers more in the line: l, r (1 ≤ l ≤ r ≤ n),
which correspond the operation 1. - If type = 2, there will be three integers more in the line: l, r, x (1 ≤ l ≤ r ≤ n; 1 ≤ x ≤ 109),
which correspond the operation 2. - If type = 3, there will be two integers more in the line: k, x (1 ≤ k ≤ n; 1 ≤ x ≤ 109),
which correspond the operation 3.
For each operation 1, please print a line containing the answer. Notice that the answer may exceed the 32-bit integer.
5 5
1 2 3 4 5
2 3 5 4
3 3 5
1 2 5
2 1 3 3
1 1 3
8
5
10 10
6 9 6 7 6 1 10 10 9 5
1 3 9
2 7 10 9
2 5 10 8
1 4 7
3 3 7
2 7 9 9
1 2 4
1 6 6
1 5 9
3 1 10
49
15
23
1 9 线段树,至于区间取模,非常明显这个数会越来越小或者不变,所以我们记录下每一个区间的最大值,假设对于模mod操作发现某个区间的最大值比mod小,显然这个区间就不是必需进行操作了。#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std; typedef long long ll;
#define rep(i,s,t) for(int i=s;i<t;i++)
#define red(i,s,t) for(int i=s-1;i>=t;i--)
#define max(a,b) (a>b? a:b)
#define clr(a,v) memset(a,v,sizeof a)
#define L t<<1
#define R t<<1|1 inline int input(){
int ret=0;bool isN=0;char c=getchar();
while(c<'0' || c>'9'){
if(c=='-') isN=1;
c=getchar();
}
while(c>='0' && c<='9'){
ret=ret*10+c-'0';c=getchar();
}
return isN? -ret:ret;
} inline void output(ll x){
if(x<0){
putchar('-');x=-x;
}
int len=0,data[20];
while(x){
data[len++]=x%10;x/=10;
}
if(!len) data[len++]=0;
while(len--)
putchar(data[len]+48);
putchar('\n');
} const int N=100005;
ll root[N<<2];
int Max[N<<2];
int n,m,a[N],op,x,y,z; inline void push_up(int t){
root[t]=root[L]+root[R];
Max[t]=max(Max[L],Max[R]);
} inline void build(int t,int x,int y){
if(x==y) root[t]=Max[t]=a[x];
else{
int mid=(x+y)>>1;
build(L,x,mid),build(R,mid+1,y);
push_up(t);
}
} inline void setVal(int t,int l,int r,int x,int v){
if(l==r){
root[t]=Max[t]=v;
}
else{
int mid=(l+r)>>1;
if(x<=mid) setVal(L,l,mid,x,v);
else setVal(R,mid+1,r,x,v);
push_up(t);
}
} inline void modefiyMod(int t,int l,int r,int x,int y,int mod){
if(Max[t]<mod) return;
if(l==r){
root[t]=Max[t]=root[t]%mod;return;
}
else{
int mid=(l+r)>>1;
if(y<=mid) modefiyMod(L,l,mid,x,y,mod);
else if(x>mid) modefiyMod(R,mid+1,r,x,y,mod);
else{
modefiyMod(L,l,mid,x,mid,mod);
modefiyMod(R,mid+1,r,mid+1,y,mod);
}
push_up(t);
}
} inline ll query(int t,int l,int r,int x,int y){
if(l>=x && r<=y) return root[t];
int mid=(l+r)>>1;
if(y<=mid) return query(L,l,mid,x,y);
else if(x>mid) return query(R,mid+1,r,x,y);
else return query(L,l,mid,x,mid)+query(R,mid+1,r,mid+1,y);
} int main(){
n=input(),m=input();
rep(i,1,n+1) a[i]=input();
build(1,1,n);
rep(i,0,m){
op=input();
if(op==1){
x=input(),y=input();
output(query(1,1,n,x,y));
}
else if(op==2){
x=input(),y=input(),z=input();
modefiyMod(1,1,n,x,y,z);
}
else{
x=input(),y=input();
setVal(1,1,n,x,y);
}
}
return 0;
}
Codeforces Round #250 (Div. 1) D. The Child and Sequence的更多相关文章
- Codeforces Round #250 (Div. 1) D. The Child and Sequence 线段树 区间取摸
D. The Child and Sequence Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest ...
- Codeforces Round #250 (Div. 1) D. The Child and Sequence(线段树)
D. The Child and Sequence time limit per test 4 seconds memory limit per test 256 megabytes input st ...
- Codeforces Round #250 (Div. 1) D. The Child and Sequence 线段树 区间求和+点修改+区间取模
D. The Child and Sequence At the children's day, the child came to Picks's house, and messed his h ...
- Codeforces Round #250 (Div. 1) D. The Child and Sequence (线段树)
题目链接:http://codeforces.com/problemset/problem/438/D 给你n个数,m个操作,1操作是查询l到r之间的和,2操作是将l到r之间大于等于x的数xor于x, ...
- Codeforces Round #250 (Div. 1) B. The Child and Zoo 并查集
B. The Child and Zoo Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/438/ ...
- Codeforces Round #250 (Div. 1) A. The Child and Toy 水题
A. The Child and Toy Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/438/ ...
- Codeforces Round #250 (Div. 2)—A. The Child and Homework
好题啊,被HACK了.曾经做题都是人数越来越多.这次比赛 PASS人数 从2000直掉 1000人 被HACK 1000多人! ! ! ! 没见过的科技啊 1 2 4 8 这组数 被黑的 ...
- Codeforces Round #250 (Div. 2) D. The Child and Zoo 并查集
D. The Child and Zoo time limit per test 2 seconds memory limit per test 256 megabytes input standar ...
- Codeforces Round #250 (Div. 2)B. The Child and Set 暴力
B. The Child and Set At the children's day, the child came to Picks's house, and messed his house ...
随机推荐
- Hadamard product
按元素乘积. python中Hadamard product和matrix product的区分: For numpy.ndarray objects, * performs elementwise ...
- Poj1741/洛谷P4718 Tree(点分治)
题面 有多组数据:Poj 无多组数据:洛谷 题解 点分治板子题,\(calc\)的时候搞一个\(two\ pointers\)扫一下统计答案就行了. #include <cmath> #i ...
- ubuntu16.04.2安装完后重启报错[sda] Assuming drive cache: write through
原因:检测主机的物理连接线,发生问题时"已连接"未勾选,重启的时候找不到iso文件 解决办法:勾选"已连接",重启机器成功
- android intent 传递 二进制数据
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha 实现序列化.
- Android消息机制——Handler
/**android的消息处理有三个核心类:Looper,Handler和Message.其实还有一个MessageQueue(消息队列), * 但是MessageQueue被封装到Looper里 ...
- [转]软件版本号扫盲——Beta RC Preview release等
1.软件版本阶段说明 *Alpha版:此版本表示该软件在此阶段主要是以实现软件功能为主,通常只在软件开发者内部交流,一般而言,该版本软件的Bug较多,需要继续修改. *Beta版:该版本相对于α版 ...
- 配置nginx虚拟目录配置文件支持tp的pathinfo
lnmp自带的包不好用, 经测试,在相应的conf文件加入这句话即可: location / { if (!-e $request_filename) { rewrite ^(.*)$ /index. ...
- wait, WIFEXITED, WEXITSTATUS
wait, WIFEXITED, WEXITSTATUS 偶尔翻到了这几个关键字,找到个文章复习了下:“点我”.记录下: wait的函数原型是: #include <sys/types. ...
- 一、 Log4E插件下载
下载地址:http://log4e.jayefem.de/content/view/3/2/ 二.安装Log4E插件 将下载下来的压缩包解压缩,如下图所示: 解压缩生成的[de.jayefem.log ...
- mysql item类
http://dev.mysql.com/doc/internals/en/item-class.html http://ourmysql.com/archives/1282