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个数,有两种操作 ...
随机推荐
- 【TC SRM 718 DIV 2 B】Reconstruct Graph
[Link]: [Description] 给你两个括号序列; 让你把这两个括号序列合并起来 (得按顺序合并) 使得组成的新的序列为合法序列; 即每个括号都能匹配; 问有多少种合并的方法; [Solu ...
- 洛谷 P1581 A+B Problem(升级版)
P1581 A+B Problem(升级版) 题目背景 小明这在写作业,其中有一道A+B Problem ,他想啊想啊想,就是想不出来,于是就找到了会编程的你...... 题目描述 这里的A+B是很奇 ...
- OpenStack_Swift源代码分析——Object-auditor源代码分析(2)
1 Object-aduitor审计详细分析 上一篇文章中,解说了Object-aduitor的启动,当中审计的详细运行是AuditorWorker实现的.在run_audit中实例化了Auditor ...
- Android自己定义效果——随机抽奖
那天逛android开源码的时候,看到一个wheel menu的自己定义效果,就是类似人家的那种转盘抽奖,把人家project看了下.认为非常好玩.可是不想在他上面改,于是就自己想了一个类似的随即抽奖 ...
- Python 数据结构与算法 —— 哈弗曼树
1. 从扩充二叉树到哈弗曼树 扩充二叉树:对二叉树 T,加入足够多的新叶节点(而不是任意),使 T 的原有结点都变成度数为 2 的分支节点,得到的二叉树称为 T 的扩充二叉树. 对于扩充二叉树而言, ...
- ajax ---- json 和 xml 区别
2.XML和JSON优缺点 (1).XML的优缺点<1>.XML的优点 A.格式统一,符合标准: B.容易与其他系统进行远程交互,数据共享比较方便.<2>.XML的缺点 A.X ...
- POJ 2459 模拟
题意: 思路: 按照题意模拟即可 //By SiriusRen #include <cstdio> using namespace std; int c,f1,f2,d,xx,yy,vis ...
- BZOJ离线版
http://dh.attack.cf/bzoj/ 闲来无事自己搞的 可以查看权限题 至于这个东西怎么搞, 可以私信我2333 网站已经挂掉. 想看的可以去rxz大爷的blog http://ruan ...
- Fragment-管理Fragment1
前面给大家稍微看了要怎么使用fragment,在上篇中,我们也初步接触到了add,replace这些fragment操作的函数,下面就再详细讲讲如何管理Fragment页面吧. 一.概述 1.Frag ...
- A股借壳上市?暂时没戏
近期股市波动,让不少P2P概念股打回原型.同花顺数据显示,上周五P2P概念股整体下跌9.28%,其中除了5家上市公司停牌外,14家P2P概念股跌幅都超过了9%.此前大热的多伦股份自6月23日以来,股价 ...