CodeVs——T 4919 线段树练习4
给你N个数,有两种操作
1:给区间[a,b]内的所有数都增加X
2:询问区间[a,b]能被7整除的个数
第一行一个正整数n,接下来n行n个整数,再接下来一个正整数Q,表示操作的个数. 接下来Q行每行若干个整数。如果第一个数是add,后接3个正整数a,b,X,表示在区间[a,b]内每个数增加X,如果是count,表示统计区间[a,b]能被7整除的个数
对于每个询问输出一行一个答案
3
2 3 4
6
count 1 3
count 1 2
add 1 3 2
count 1 3
add 1 3 3
count 1 3
0
0
0
1
10%:1<N<=10,1<Q<=10
30%:1<N<=10000,1<Q<=10000
100%:1<N<=100000,1<Q<=100000
#include <algorithm>
#include <cstdio> using namespace std; const int N(+);
int n,x,y,z,q; #define lc (now<<1)
#define rc (now<<1|1)
#define mid (l+r>>1)
struct AC_Tree
{
int val[],flag;
}tree[N<<];
inline void pushup(int now)
{
for(int i=;i<;i++)
tree[now].val[i]=tree[lc].val[i]+tree[rc].val[i];
}
inline void pushdown(int now)
{
int temp[],flag=tree[now].flag; tree[now].flag=;
tree[lc].flag+=flag; tree[rc].flag+=flag;
for(int i=;i<;i++) temp[i]=tree[lc].val[i];
for(int i=;i<;i++) tree[lc].val[((i+flag)%)]=temp[i];
for(int i=;i<;i++) temp[i]=tree[rc].val[i];
for(int i=;i<;i++) tree[rc].val[((i+flag)%)]=temp[i];
}
void Build(int now,int l,int r)
{
if(l==r)
{
scanf("%d",&x);
tree[now].val[x%]++;
return ;
}
Build(lc,l,mid);
Build(rc,mid+,r);
pushup(now);
}
void Change(int now,int l,int r,int L,int R,int x)
{
if(l==L&&r==R)
{
int temp[];
tree[now].flag+=x;
for(int i=;i<;i++) temp[i]=tree[now].val[i];
for(int i=;i<;i++) tree[now].val[(i+x)%]=temp[i];
return ;
}
if(tree[now].flag) pushdown(now);
if(R<=mid) Change(lc,l,mid,L,R,x);
else if(L>mid) Change(rc,mid+,r,L,R,x);
else Change(lc,l,mid,L,mid,x),Change(rc,mid+,r,mid+,R,x);
pushup(now);
}
int Query(int now,int l,int r,int L,int R)
{
if(l==L&&r==R) return tree[now].val[];
if(tree[now].flag) pushdown(now);
if(R<=mid) return Query(lc,l,mid,L,R);
else if(L>mid) return Query(rc,mid+,r,L,R);
else return Query(lc,l,mid,L,mid)+Query(rc,mid+,r,mid+,R);
} int main()
{
scanf("%d",&n);
Build(,,n);
scanf("%d",&q);
for(char s[];q--;)
{
scanf("%s%d%d",s,&x,&y);
if(s[]=='a')
{
scanf("%d",&z);
Change(,,n,x,y,z);
}
else printf("%d\n",Query(,,n,x,y));
}
return ;
}
CodeVs——T 4919 线段树练习4的更多相关文章
- codevs 4919 线段树练习4
线段树水题.我是ziliuziliu,我是最强的#include<iostream> #include<cstdio> #include<cstring> #inc ...
- 4163 hzwer与逆序对 (codevs + 权值线段树 + 求逆序对)
题目链接:http://codevs.cn/problem/4163/ 题目:
- codevs 1690 开关灯 线段树+延迟标记
1690 开关灯 时间限制: 1 s 空间限制: 128000 KB 题目描述 Description YYX家门前的街上有N(2<=N<=100000)盏路灯,在晚上六点之前,这 ...
- codevs 1690 开关灯 线段树区间更新 区间查询Lazy
题目描述 Description YYX家门前的街上有N(2<=N<=100000)盏路灯,在晚上六点之前,这些路灯全是关着的,六点之后,会有M(2<=m<=100000)个人 ...
- Codevs 4373 窗口(线段树 单调队列 st表)
4373 窗口 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 黄金 Gold 题目描述 Description 给你一个长度为N的数组,一个长为K的滑动的窗体从最左移至最右端,你只 ...
- 【codevs】1082 线段树练习 3 <区间修改+区间和>
题目连接 http://codevs.cn/problem/1082/ Description 给你N个数,有两种操作: 1:给区间[a,b]的所有数增加X 2:询问区间[a,b]的数的和. In ...
- COdeVS——T 1082 线段树练习 3 (分块练习)
http://codevs.cn/problem/1082/ 时间限制: 3 s 空间限制: 128000 KB 题目等级 : 大师 Master 题解 题目描述 Descriptio ...
- codevs 1690 开关灯 线段树水题
没什么好说的,标记put表示开关是否开着. #include<cstdio> #include<cstring> #include<algorithm> using ...
- AC日记——线段树练习4 codevs 4919
4919 线段树练习4 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description 给你N个数,有两种操作 ...
随机推荐
- 重大漏洞:Bitlocker成摆设,多款固态硬盘硬件加密均可被绕过
荷兰拉德堡德大学的两名研究人员日前发表论文,描述了固态硬盘流行加密软件Bitlocker中的关键漏洞.固态硬盘需要口令来加密和解密其上存储的内容,但该口令可以被绕过. 荷兰拉德堡德大学的两名研究人员日 ...
- Android 经常使用的adb命令
1.安装APK(假设加 -r 參数,保留已设定数据.又一次安装filename.apk) adb install xxx.apk adb install -r xxx.apk 2.卸载APK(假设加 ...
- Image与byte[]数组的相互转换
近期项目有个需求是关于图片操作的,须要将图片保存到数据库中.经过尝试才知道Image类型文件是不能直接存储到数据库中的.保存之前须要我们做一步转换:将Image转换成字节数组类型Byte ...
- eclipse中编码的设置
Windows-------->prefenerce------>General-------->Workspace
- findFocus-获得拥有焦点的控件
所有的view控件有一个findFocus方法,这个方法如下 /** * Find the view in the hierarchy rooted at this view that current ...
- Lucene 定义
福利 => 每天都推送 欢迎大家,关注微信扫码并加入我的4个微信公众号: 大数据躺过的坑 Java从入门到架构师 人工智能躺过的坑 Java全栈大联盟 ...
- js全局的解析与执行过程
先看下面实例的执行结果: alert(a);//undefined alert(b);//报错 alert(f);//输出f函数字符串 alert(g);//undefined var a = 1; ...
- OpenCV —— HighGUI
分为:硬件相关部分,文件部分以及图形用户接口部分 创建窗口 —— cvNamedWindow 若设置成 CV_WINDOW_AUTOSIZE 窗口大小会随着图像的载入而根据图像大小调整,用户没办法手动 ...
- css3--根据数据加载显示的一个动画
css: .circle { width: 200px; height: 200px; position: absolute; border-radius: 50%; background: #0cc ...
- LuoguP3356 火星探险问题(费用流)
题目描述 火星探险队的登陆舱将在火星表面着陆,登陆舱内有多部障碍物探测车.登陆舱着陆后,探测车将离开登陆舱向先期到达的传送器方向移动.探测车在移动中还必须采集岩石标本.每一块岩石标本由最先遇到它的探测 ...