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();//插入是,也是头和尾暴力插入,中间那些加到一个累计里 ...
随机推荐
- 关于SWT中的布局Layout
组件装在容器里,那么这些组件是如何布局的呢?在这之前所有的例子都是使用setBounds来 进行绝对坐标的定位的. 在实际应用过程中大都是采用布局管理器的方式来布局容器中的组件. 布局管理器定义了组件 ...
- 跨域方法之CORS
跨域的方法非常之多,如果想了解其中CORS,不要浪费时间,看下面三个就够了 了解CORS https://developer.mozilla.org/en-US/docs/Web/HTTP/Acc ...
- HashMap的一般用法以及遍历方法
private Map<Integer,String> selected = new HashMap<Integer,String>(); selected.put(key,v ...
- linux系统文件属性
1 硬链接概念 硬链接是指通过索引节点(Inode)来进行链接,在Linux(ext2,ext3)文件系统中,保存在磁盘分区中的文件不管是什么类型都会给它分配一个编号,这个编号被称为索引节点编号(I ...
- ajax.abort 终止AJAX请求
$(document).ready(function () { var ajax; $('#choice').change(function() ...
- 12天学好C语言——记录我的C语言学习之路(Day 2)
12天学好C语言--记录我的C语言学习之路 Day 2: 我建议大家每一天学习之前都仅凭记忆去敲前一天敲过的最后一个程序,或者敲前一天你认为最难最长的一个程序,如果一晚上的睡眠之后不看书还能敲的出来, ...
- OC6_类方法
// // Dog.h // OC6_类方法 // // Created by zhangxueming on 15/6/9. // Copyright (c) 2015年 zhangxueming. ...
- error RC1205: invalid code page
Get followings error and warnings when building project: error RC1205: invalid code pagewarning C400 ...
- 以boost::function和boost:bind取代虚函数
转自:http://blog.csdn.net/Solstice/archive/2008/10/13/3066268.aspx 这是一篇比较情绪化的blog,中心思想是“继承就像一条贼船,上去就下不 ...
- OpenJudge/Poj 1226 Substrings
1.链接地址: http://bailian.openjudge.cn/practice/1226/ http://poj.org/problem?id=1226 2.题目: 总时间限制: 1000m ...