原题
长度为n的序列,有两种操作:
1、[l,r]区间每个数+w
2、询问[l,r]区间有多少个数>c
记录lazy数组即可。
#include<cstdio>
#include<algorithm>
#define N 1000010
#define B 1010
#define st(x) (((x)-1)*B+1)
#define ed(x) min((x)*B,n)
#define bel(x) (((x)-1)/B+1)
using namespace std;
int n,q,l,r,w,a[N],s[N],lz[N];
char b[3];
int read()
{
int ans=0,fu=1;
char j=getchar();
for (;j<'0' || j>'9';j=getchar()) if (j=='-') fu=-1;
for (;j>='0' && j<='9';j=getchar()) ans*=10,ans+=j-'0';
return ans*fu;
}
void push(int x)
{
if (!lz[x]) return ;
for (int i=st(x);i<=ed(x);i++)
s[i]+=lz[x],a[i]+=lz[x];
lz[x]=0;
}
void single_change(int l,int r,int w)
{
int b=bel(l);
push(b);
for (int i=l;i<=r;i++) a[i]+=w;
for (int i=st(b);i<=ed(b);i++) s[i]=a[i];
sort(s+st(b),s+ed(b)+1);
}
void change(int l,int r,int w)
{
if (bel(l)==bel(r)) return single_change(l,r,w);
for (int i=bel(l)+1;i<bel(r);i++)
lz[i]+=w;
single_change(l,ed(bel(l)),w);
single_change(st(bel(r)),r,w);
}
int block_query(int b,int w)
{
return s+ed(b)-upper_bound(s+st(b),s+ed(b)+1,w-lz[b]-1)+1;
}
int single_query(int l,int r,int w)
{
int b=bel(l),ret=0;
for (int i=l;i<=r;i++)
if (a[i]+lz[b]>=w) ret++;
return ret;
}
int query(int l,int r,int w)
{
if (bel(l)==bel(r)) return single_query(l,r,w);
int ret=0;
for (int i=bel(l)+1;i<bel(r);i++)
ret+=block_query(i,w);
return ret+single_query(l,ed(bel(l)),w)+single_query(st(bel(r)),r,w);
}
int main()
{
n=read();
q=read();
for (int i=1;i<=n;i++)
a[i]=s[i]=read();
for (int i=1;st(i)<=n;i++) sort(s+st(i),s+ed(i)+1);
while (q--)
{
scanf("%s",b);
l=read();
r=read();
w=read();
if (b[0]=='M') change(l,r,w);
else printf("%d\n",query(l,r,w));
}
return 0;
}
[bzoj] 3343 教主的魔法 || 带修改分块的更多相关文章
-
BZOJ 3343: 教主的魔法(分块+二分查找)
BZOJ 3343: 教主的魔法(分块+二分查找) 3343: 教主的魔法 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 1172 Solved: ...
-
BZOJ 3343: 教主的魔法 [分块]【学习笔记】
3343: 教主的魔法 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 1172 Solved: 526[Submit][Status][Discus ...
-
Bzoj 3343: 教主的魔法(分块+二分答案)
3343: 教主的魔法 Time Limit: 10 Sec Memory Limit: 256 MB Description 教主最近学会了一种神奇的魔法,能够使人长高.于是他准备演示给XMYZ信息 ...
-
Bzoj 3343: 教主的魔法 分块,二分
3343: 教主的魔法 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 821 Solved: 364[Submit][Status][Discuss ...
-
BZOJ 3343教主的魔法
Description 教主最近学会了一种神奇的魔法,能够使人长高.于是他准备演示给XMYZ信息组每个英雄看.于是N个英雄们又一次聚集在了一起,这次他们排成了一列,被编号为1.2.…….N. 每个人的 ...
-
bzoj 3343: 教主的魔法
Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 924 Solved: 402[Submit][Status][Discuss] Descriptio ...
-
BZOJ——3343: 教主的魔法 || 洛谷—— P2801 教主的魔法
http://www.lydsy.com/JudgeOnline/problem.php?id=3343 || https://www.luogu.org/problem/show?pid=280 ...
-
bzoj 3343 教主的魔法 分块
修改直接对整块打标记,两边暴力. 查询需要保证每个整块有序,所以在修改时排序就好啦 #include<cstdio> #include<cstring> #include< ...
-
BZOJ 3343 教主的魔法(分块)
题意: 有一个1e6的数组,t次操作:将[l,r]内的值增加w,或者查询[l,r]内的值大于等于add的 思路: 分块,块大小为sqrt(n),每次只需要暴力头尾两块,中间的整块打标记, 对于查询查操 ...
随机推荐
-
传统IT企业与互联网企业的一点思考
[注意前提]应当说,比较常用的管理策略并没有界线分明的优劣之分,只有适不适合企业的经营战略,团队文化,发展状况等. 之所以有传统IT企业与互联网企业的区别,主要的原因是两者所处的市场环境与经营思路造成 ...
-
Java基础知识系列——数组
数组是我们在编程中常用到的一种数据结构. 数组创建有三种方式,以int类型为例: 1.int value[] = new int[]{1,2,3,4,5}; //{}中的是元素 2.int value ...
-
Tiff – 值得你体验一下的可视化的字体对比工具
Tiff 是一款字体对比工具,可视化对比两种字体之间的差异.这是一个工具来帮助比较两种字体,同时学习排版.在这一点上,谷歌 Web 字体作为 Tiff 外部字体文件的唯一来源.由于应用程序使用的一些功 ...
-
Monkey学习(4)简单测试实例
1.首先测试设备是否连接成功,在命令行中输入: adb devices 如果出现设备信息,代表链接成功.我这里的设备名称是“emulator-5554” 2.得到测试apk的包名,如果有APK源码包的 ...
-
httpclient发送multipart/form-data类型参数和用MultipartRequest接收参数
一.利用HttpClient发送基于Content-Type="multipart/form-data"形式的表单 package com.test.httpclient; imp ...
-
你知道用AngularJs怎么定义指令吗?
前言 最近学习了下angularjs指令的相关知识,也参考了前人的一些文章,在此总结下. 欢迎批评指出错误的地方. Angularjs指令定义的API AngularJs的指令定义大致如下 ang ...
-
为什么每个请求都要有用户名密码呢,那不是每次都要查询一下了,token,表示这个用户已经验证通过了,在token有效期内,只需要判断token是否有效就可以了
为什么每个请求都要有用户名密码呢,那不是每次都要查询一下了,token,表示这个用户已经验证通过了,在token有效期内,只需要判断token是否有效就可以了
-
COJ 2108 Day7-例1
Day7-例1 难度级别:B: 运行时间限制:1000ms: 运行空间限制:256000KB: 代码长度限制:2000000B 试题描述 在计算机中,CPU只能和高速缓存Cache直接交换数据.当 ...
-
使用php下载的文件打不开,自己用着没问题,客户用就不行?
1 现象: 开发的时候用的好好的文件下载功能,部署到客户那边就不好使了,几乎所有从服务器下载下来的文件都不能打开. 比较了上传前的文件.上传后服务器端的文件.下载后本机的文件,发现同一个文件,上传后还 ...
-
XML相关知识
XML的定义: XML即可扩展标记语言标记是指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种信息的文章等.如何定义这些标记,既可以选择国际通用的标记语言,比如HTML,也可以使用 ...