bzoj 3343: 教主的魔法
Time Limit: 10 Sec Memory Limit: 256 MB
Submit: 924 Solved: 402
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
1 2 3 4 5
A 1 5 4
M 3 5 1
A 1 5 4
Sample Output
3
HINT
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<queue>
#include<vector>
using namespace std;
typedef long long LL;
const int maxn=;
int N,Q,M,block;
int a[maxn],b[maxn],pos[maxn],add[maxn];
char s[];
inline void reset(int x){
int l=(x-)*block+,r=min(N,x*block);
for(int i=l;i<=r;i++) b[i]=a[i];
sort(b+l,b+r+);
}
inline void update(int l,int r,int delta){
if(pos[l]==pos[r]){
for(int i=l;i<=r;i++) a[i]+=delta;
}
else{
for(int i=l;i<=pos[l]*block;i++) a[i]+=delta;
for(int i=(pos[r]-)*block+;i<=r;i++) a[i]+=delta;
}
reset(pos[l]); reset(pos[r]);
for(int i=pos[l]+;i<=pos[r]-;i++) add[i]+=delta;
}
inline int find(int l,int r,int v){
if(l+>=r){
if(b[l]>=v) return l;
else return r;
}
int mid=(l+r)>>;
if(b[mid]>=v) return find(l,mid,v);
else return find(mid+,r,v);
}
inline int query(int l,int r,int z){
int sum=;
if(pos[l]==pos[r]){
for(int i=l;i<=r;i++)
if(a[i]+add[pos[i]]>=z) sum++;
}
else{
for(int i=l;i<=pos[l]*block;i++)
if(a[i]+add[pos[i]]>=z) sum++;
for(int i=(pos[r]-)*block+;i<=r;i++)
if(a[i]+add[pos[i]]>=z) sum++;
}
for(int i=pos[l]+;i<=pos[r]-;i++){
sum+=(i*block+)-find((i-)*block+,i*block+,z-add[i]);
}
return sum;
}
int main(){
scanf("%d%d",&N,&Q);
block=int(sqrt(N));
for(int i=;i<=N;i++){
scanf("%d",&a[i]); b[i]=a[i];
pos[i]=(i-)/block+;
}
if(N%block!=) M=N/block+;
else M=N/block;
for(int i=;i<=M;i++) reset(i);
while(Q--){
int x,y,z;
scanf("%s%d%d%d",s,&x,&y,&z);
if(s[]=='M') update(x,y,z);
else printf("%d\n",query(x,y,z));
}
return ;
}
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 MBSubmit: 821 Solved: 364[Submit][Status][Discuss ...
- Bzoj 3343: 教主的魔法(分块+二分答案)
3343: 教主的魔法 Time Limit: 10 Sec Memory Limit: 256 MB Description 教主最近学会了一种神奇的魔法,能够使人长高.于是他准备演示给XMYZ信息 ...
- BZOJ——3343: 教主的魔法 || 洛谷—— P2801 教主的魔法
http://www.lydsy.com/JudgeOnline/problem.php?id=3343 || https://www.luogu.org/problem/show?pid=280 ...
- BZOJ 3343教主的魔法
Description 教主最近学会了一种神奇的魔法,能够使人长高.于是他准备演示给XMYZ信息组每个英雄看.于是N个英雄们又一次聚集在了一起,这次他们排成了一列,被编号为1.2.…….N. 每个人的 ...
- bzoj 3343 教主的魔法 分块
修改直接对整块打标记,两边暴力. 查询需要保证每个整块有序,所以在修改时排序就好啦 #include<cstdio> #include<cstring> #include< ...
- [bzoj] 3343 教主的魔法 || 带修改分块
原题 长度为n的序列,有两种操作: 1.[l,r]区间每个数+w 2.询问[l,r]区间有多少个数>c 记录lazy数组即可. #include<cstdio> #include&l ...
- 块状链表 bzoj 3343教主的魔法
//块状链表//分块排序,然后每次查找时在暴力查找头和尾两个块.//中间那些块,因为有序所以只需2分查找即可.我用的是lower_pound();//插入是,也是头和尾暴力插入,中间那些加到一个累计里 ...
随机推荐
- 它是对 ACME(automated certificate management environment) 协议的实现,只要实现了 ACME 协议的客户端都可以跟它交互。
它是对 ACME(automated certificate management environment) 协议的实现,只要实现了 ACME 协议的客户端都可以跟它交互. https://mp.we ...
- train_test_split, 关于随机抽样和分层抽样
https://zhuanlan.zhihu.com/p/49991313 在将样本数据分成训练集和测试集的时候,应当谨慎地考虑一下是采用纯随机抽样,还是分层抽样. 通常,数据集如果足够大,纯随机抽样 ...
- MongoDB的"副本“数据库服务器
1.假设1数据库服务器为活跃服务器(主服务器),2和3为备份服务器,当1出现故障的时候,那么会在2和3中推选出一个(根据权重的等规则)作为活跃服务器,而当1又恢复正常了之后呢,它将以备份服务器的身份出 ...
- mysql 数据库的操作
1.数据库的查看 1)查看mysql中所有的数据库 "show databases;" mysql> show databases; +---------------- ...
- semi-consistent简介
semi-consistent简介 http://hedengcheng.com/?p=220 semi-consistent简介 1 semi-consistent实现 2 MySQL ...
- R中apply等函数用法[转载]
转自:https://www.cnblogs.com/nanhao/p/6674063.html 1.apply函数——对矩阵 功能是:Retruns a vector or array or lis ...
- JavaWeb 服务启动时,在后台启动加载一个线程
JavaWeb 服务启动时,在后台启动加载一个线程. 目前,我所掌握的一共有两种方法,第一种是监听(Listener),第二种是配置随项目启动而启动的Servlet. 下面对这两种方法做一简单的介绍, ...
- 提示'HTTP消息不可读'
1.提示下面的错误信息 2.修改后的代码,费用接口 import unittest import requests import json import HTMLTestRunner ur1 = 'h ...
- HTTP 头和 PHP header() 函数
http://unifreak.github.io/translation/Http_headers_and_PHP_header()_function 引言 许多初级到中级的的 PHP 程序员把 h ...
- Web前端开发推荐阅读书籍、学习课程下载
转自http://www.xuanfengge.com/fe-books.html 前言 学校里没有前端的课程,那如何学习JavaScript,又如何使自己成为一个合格的前端工程师呢? 除了在项目中学 ...