博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【BZOJ3343】教主的魔法 分块
阅读量:5075 次
发布时间:2019-06-12

本文共 1556 字,大约阅读时间需要 5 分钟。

【BZOJ3343】教主的魔法

Description

教主最近学会了一种神奇的魔法,能够使人长高。于是他准备演示给XMYZ信息组每个英雄看。于是
N个英雄们又一次聚集在了一起,这次他们排成了一列,被编号为1、2、……、
N
每个人的身高一开始都是不超过1000的正整数。教主的魔法每次可以把闭区间[
L
R](1≤
L
R
N)内的英雄的身高全部加上一个整数
W。(虽然
L=
R时并不符合区间的书写规范,但我们可以认为是单独增加第
L
R)个英雄的身高)
CYZ、光哥和ZJQ等人不信教主的邪,于是他们有时候会问WD闭区间 [
L
R] 内有多少英雄身高大于等于
C,以验证教主的魔法是否真的有效。
WD巨懒,于是他把这个回答的任务交给了你。

Input

       第1行为两个整数
N
Q
Q为问题数与教主的施法数总和。
       第2行有
N个正整数,第
i个数代表第
i个英雄的身高。
       第3到第
Q+2行每行有一个操作:
(1)       若第一个字母为“M”,则紧接着有三个数字
L
R
W。表示对闭区间 [
L
R] 内所有英雄的身高加上
W
(2)       若第一个字母为“A”,则紧接着有三个数字
L
R
C。询问闭区间 [
L
R] 内有多少英雄的身高大于等于
C

Output

       对每个“A”询问输出一行,仅含一个整数,表示闭区间 [
L
R] 内身高大于等于
C的英雄数。

Sample Input

5 3
1 2 3 4 5
A 1 5 4
M 3 5 1
A 1 5 4

Sample Output

2
3

HINT

【输入输出样例说明】
原先5个英雄身高为1、2、3、4、5,此时[1, 5]间有2个英雄的身高大于等于4。教主施法后变为1、2、4、5、6,此时[1, 5]间有3个英雄的身高大于等于4。
【数据范围】
对30%的数据,
N≤1000,
Q≤1000。
对100%的数据,
N≤1000000,
Q≤3000,1≤
W≤1000,1≤
C≤1,000,000,000。

题解:N这么大一看就不想让你用树套树(其实还没写过),Q这么小就是想让你分块嘛~

对于中间的大块,我们可以先将原数组复制一遍,每块都排序,然后查询时直接二分;对于两边的小块,暴力扫一遍就好了

修改时,我们将中间的大块都打上标记,两边重新修改+排序,记着别忘把标记加上

最后,别忘了a和b在一块时要特判!特判!修改查询都要特判!!

 

#include 
#include
#include
#include
#include
using namespace std;int n,m,siz,ans;int s[1010],p[1001000],q[1001000];char str[5];int main(){ scanf("%d%d",&n,&m); int i,j,l,r,mid,a,b,c; siz=int(sqrt(1.0*n)); for(i=0;i
=c; printf("%d\n",ans); continue; } for(j=a;j
=c; for(j=b/siz*siz;j<=b;j++) ans+=p[j]+s[b/siz]>=c; for(j=a/siz+1;j>1; if(q[mid]+s[j]

转载于:https://www.cnblogs.com/CQzhangyu/p/6573559.html

你可能感兴趣的文章
redis集群如何清理前缀相同的key
查看>>
Python 集合(Set)、字典(Dictionary)
查看>>
获取元素
查看>>
proxy写监听方法,实现响应式
查看>>
第一阶段冲刺06
查看>>
十个免费的 Web 压力测试工具
查看>>
EOS生产区块:解析插件producer_plugin
查看>>
mysql重置密码
查看>>
jQuery轮 播的封装
查看>>
一天一道算法题--5.30---递归
查看>>
JS取得绝对路径
查看>>
排球积分程序(三)——模型类的设计
查看>>
python numpy sum函数用法
查看>>
php变量什么情况下加大括号{}
查看>>
linux程序设计---序
查看>>
【字符串入门专题1】hdu3613 【一个悲伤的exkmp】
查看>>
C# Linq获取两个List或数组的差集交集
查看>>
HDU 4635 Strongly connected
查看>>
ASP.NET/C#获取文章中图片的地址
查看>>
Spring MVC 入门(二)
查看>>