[bzoj] 3343 教主的魔法 || 带修改分块

时间:2022-09-10 07:42:51

原题

长度为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 教主的魔法 || 带修改分块的更多相关文章

  1. BZOJ 3343&colon; 教主的魔法&lpar;分块&plus;二分查找&rpar;

    BZOJ 3343: 教主的魔法(分块+二分查找) 3343: 教主的魔法 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 1172  Solved:  ...

  2. BZOJ 3343&colon; 教主的魔法 &lbrack;分块&rsqb;【学习笔记】

    3343: 教主的魔法 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 1172  Solved: 526[Submit][Status][Discus ...

  3. Bzoj 3343&colon; 教主的魔法&lpar;分块&plus;二分答案&rpar;

    3343: 教主的魔法 Time Limit: 10 Sec Memory Limit: 256 MB Description 教主最近学会了一种神奇的魔法,能够使人长高.于是他准备演示给XMYZ信息 ...

  4. Bzoj 3343&colon; 教主的魔法 分块&comma;二分

    3343: 教主的魔法 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 821  Solved: 364[Submit][Status][Discuss ...

  5. BZOJ 3343教主的魔法

    Description 教主最近学会了一种神奇的魔法,能够使人长高.于是他准备演示给XMYZ信息组每个英雄看.于是N个英雄们又一次聚集在了一起,这次他们排成了一列,被编号为1.2.…….N. 每个人的 ...

  6. bzoj 3343&colon; 教主的魔法

    Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 924  Solved: 402[Submit][Status][Discuss] Descriptio ...

  7. BZOJ——3343&colon; 教主的魔法 &vert;&vert; 洛谷—— P2801 教主的魔法

    http://www.lydsy.com/JudgeOnline/problem.php?id=3343  ||  https://www.luogu.org/problem/show?pid=280 ...

  8. bzoj 3343 教主的魔法 分块

    修改直接对整块打标记,两边暴力. 查询需要保证每个整块有序,所以在修改时排序就好啦 #include<cstdio> #include<cstring> #include&lt ...

  9. BZOJ 3343 教主的魔法(分块)

    题意: 有一个1e6的数组,t次操作:将[l,r]内的值增加w,或者查询[l,r]内的值大于等于add的 思路: 分块,块大小为sqrt(n),每次只需要暴力头尾两块,中间的整块打标记, 对于查询查操 ...

随机推荐

  1. 传统IT企业与互联网企业的一点思考

    [注意前提]应当说,比较常用的管理策略并没有界线分明的优劣之分,只有适不适合企业的经营战略,团队文化,发展状况等. 之所以有传统IT企业与互联网企业的区别,主要的原因是两者所处的市场环境与经营思路造成 ...

  2. Java基础知识系列——数组

    数组是我们在编程中常用到的一种数据结构. 数组创建有三种方式,以int类型为例: 1.int value[] = new int[]{1,2,3,4,5}; //{}中的是元素 2.int value ...

  3. Tiff – 值得你体验一下的可视化的字体对比工具

    Tiff 是一款字体对比工具,可视化对比两种字体之间的差异.这是一个工具来帮助比较两种字体,同时学习排版.在这一点上,谷歌 Web 字体作为 Tiff 外部字体文件的唯一来源.由于应用程序使用的一些功 ...

  4. Monkey学习(4)简单测试实例

    1.首先测试设备是否连接成功,在命令行中输入: adb devices 如果出现设备信息,代表链接成功.我这里的设备名称是“emulator-5554” 2.得到测试apk的包名,如果有APK源码包的 ...

  5. httpclient发送multipart&sol;form-data类型参数和用MultipartRequest接收参数

    一.利用HttpClient发送基于Content-Type="multipart/form-data"形式的表单 package com.test.httpclient; imp ...

  6. 你知道用AngularJs怎么定义指令吗?

    前言 最近学习了下angularjs指令的相关知识,也参考了前人的一些文章,在此总结下. 欢迎批评指出错误的地方.   Angularjs指令定义的API AngularJs的指令定义大致如下 ang ...

  7. 为什么每个请求都要有用户名密码呢,那不是每次都要查询一下了,token,表示这个用户已经验证通过了,在token有效期内,只需要判断token是否有效就可以了

    为什么每个请求都要有用户名密码呢,那不是每次都要查询一下了,token,表示这个用户已经验证通过了,在token有效期内,只需要判断token是否有效就可以了

  8. COJ 2108 Day7-例1

    Day7-例1 难度级别:B: 运行时间限制:1000ms: 运行空间限制:256000KB: 代码长度限制:2000000B 试题描述   在计算机中,CPU只能和高速缓存Cache直接交换数据.当 ...

  9. 使用php下载的文件打不开,自己用着没问题,客户用就不行?

    1 现象: 开发的时候用的好好的文件下载功能,部署到客户那边就不好使了,几乎所有从服务器下载下来的文件都不能打开. 比较了上传前的文件.上传后服务器端的文件.下载后本机的文件,发现同一个文件,上传后还 ...

  10. XML相关知识

    XML的定义:  XML即可扩展标记语言标记是指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种信息的文章等.如何定义这些标记,既可以选择国际通用的标记语言,比如HTML,也可以使用 ...