BZOJ 3343教主的魔法
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<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
const int maxn=;
struct aa{int num,tag,h,block;}a[maxn];
int c[maxn];
int mid,b[maxn],n,q,tot,l,r,w;
using namespace std;
void add(int l,int r,int w){//这里写毁了
int zuo=a[l].h,you=a[r].h;
if (a[l].block*mid>=r) {for (int i=l;i<=r;i++) a[i].num+=w;
for (int i=(a[zuo].block-)*mid+;i<=a[zuo].block*mid;i++) c[i]=a[i].num;
sort(c+(a[l].block-)*mid+,c+a[l].block*mid+);return;}
for (int i=l;i<=a[l].block*mid;i++)a[i].num+=w;
for (int i=(a[zuo].block-)*mid+;i<=a[zuo].block*mid;i++) c[i]=a[i].num;
sort(c+(a[l].block-)*mid+,c+a[l].block*mid+);
for(int i=(a[r].block-)*mid+;i<=r;i++) a[i].num+=w;
for (int i=(a[you].block-)*mid+;i<=a[you].block*mid;i++) c[i]=a[i].num;
sort(c+(a[r].block-)*mid+,c+a[r].block*mid+);
for (int i=a[l].block+;i<=a[r].block-;i++)
a[(i-)*mid+].tag+=w;
} int find1(int l,int r,int c){
for (int i=l;i<=r;i++) b[i]=a[i].num; b[r+]=;
sort(b+l,b+r+);
int x=lower_bound(b+l,b+r+,c)-b;
return r-x+;
} int find2(int l,int r,int d){
int x=lower_bound(c+l,c+r+,d)-c;
return r-x+;
} int query(int l,int r,int d){
int zuo=a[l].h,you=a[r].h;
int ans=;
if (a[l].block*mid>=r) return find1(l,r,d-a[zuo].tag);
ans+=find1(l,a[l].block*mid,d-a[zuo].tag);
for (int i=a[l].block+;i<=a[r].block-;i++)
ans+=find2((i-)*mid+,i*mid,d-a[(i-)*mid+].tag);
ans+=find1((a[r].block-)*mid+,r,d-a[you].tag);
return ans;
} int main(){
freopen("magic.txt","r",stdin);
freopen("me.txt","w",stdout);
char ch[];
scanf("%d%d",&n,&q);
mid=(int)sqrt(n)+;
for (int i=;i<=n;i++) scanf("%d",&a[i].num),c[i]=a[i].num;
for (int i=;i<=n;i++)if (tot*mid>=i) a[i].block=tot,a[i].h=a[i-].h;else a[i].block=++tot,a[i].h=i;
for (int i=;i<=tot;i++)
sort(c+(i-)*mid+,c+i*mid+);
for (int j=;j<q;j++){
scanf("%s%d%d%d",&ch,&l,&r,&w);
switch(ch[]){
case 'M':add(l,r,w);break;
case 'A':printf("%d\n",query(l,r,w)); break;
}
}
}
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: 教主的魔法
Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 924 Solved: 402[Submit][Status][Discuss] Descriptio ...
- 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();//插入是,也是头和尾暴力插入,中间那些加到一个累计里 ...
随机推荐
- 如何去除掉inline-block元素之间的默认间距
前几天写一个页面 div{width:900px;} div li{ display:inline-block; width:300px;} <ul> <li></li& ...
- 下拉列表(web),用jQuery实现
<!DOCTYPE html><html><head> <meta http-equiv="Content-Type" conten ...
- android开发之路04(初级android工程师必会,你懂得!)
Android初级Android工程师重点掌握内容如下: 1.Android开发基础: ①UI界面设计: ②SQLite数据库: ③android四大组件: ④android网络编程: ⑤androi ...
- Listview实现分页下载
分析: * 1.初始控件,展示第一页数据 * 2.设置触发条件 * 1.设置滚动监听 * 2.判断是否在底部 * 3.判断是否停止滚动 * 4.更改网络请求参数为下一页 * 5.异步网络请求 * 6. ...
- swift项目中嵌入oc
参考资料 需要注意的是 与oc包含swift不同的是 swift包含oc需要在桥接文件中包含要使用的oc的头文件 demo:swiftPlayOc(提取码:37c6)
- 【模拟】UVa 1030 - Image Is Everything
1030 - Image Is Everything Time limit: 3.000 seconds Your new company is building a robot that can h ...
- [转]让你提升命令行效率的 Bash 快捷键
生活在 Bash shell 中,熟记以下快捷键,将极大的提高你的命令行操作效率. 编辑命令 Ctrl + a :移到命令行首 Ctrl + e :移到命令行尾 Ctrl + f :按字符前移(右向) ...
- hihocoder 1186
1186 : Coordinates 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Give you two integers P and Q. Let all div ...
- 通过spring来配置某个命令号和执行方法之间的映射
整理的内容 1.手动获取spring的ApplicationContext和bean对象 写一个工具类实现ApplicationContextAware接口 2.反射的知识整理 3.前后端协议交互的时 ...
- Microsoft JScript 运行时错误: Sys.WebForms.PageRequestManagerParserErrorException无法分析从服务器收到的消息。之所以出现此错误,
Microsoft JScript 运行时错误: Sys.WebForms.PageRequestManagerParserErrorException: 无法分析从服务器收到的消息.之所以出现此错误 ...