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();//插入是,也是头和尾暴力插入,中间那些加到一个累计里 ...
随机推荐
- Bleed Brake Master Cylinder with Intelligent Tester IT2
When the brake fluid level drops too low in the master cylinder reservoir, air bubbles can get caugh ...
- Windows2012中安装Nginx并创建为Windows服务
安装Nginx 下载windows版nginx (http://nginx.org/download/nginx-1.10.0.zip),之后解压到需要放置的位置(D:\xampp\nginx) 将N ...
- /lib /usr/lib /usr/local/lib 区别
简单说,/lib是内核级的,/usr/lib是系统级的,/usr/local/lib是用户级的. /lib/ — 包含许多被 /bin/ 和 /sbin/ 中的程序使用的库文件.目录 /usr/lib ...
- Java系统程序员修炼之道
一:Java语言学习 对线程(thread),串行化,反射,网络编程,JNI技术,容器(Map,List, Iterator), 类加载器 (ClassLoader),输入输出流,垃圾回收机制, 有比 ...
- windows7 图形界面远程 centos6.5
一.首先确定centos已经安装了gnome,因为centos自身没有图形界面,别说远程图形界面方式访问了,就本地图像界面方式都不行 1.首先查看系统的运行级别以及是否安装了桌面环境 1.使用命 ...
- otf字体转ttf字体
可以使用Font creator进行转换字体. 绿色版下载链接 Font Creator(字体编辑软件下载)V9.0官方版 或者我的百度云:http://pan.baidu.com/s/1c1jjfm ...
- android之手动安装apk到模拟器
一.将apk放到SDK的指定路径 二.打开命令行 三.安装apk到模拟器 此处遇到无法找到主机,解决办法: 发现是进程2512堵塞导致的 进入powershell 查看进程 发现2512进程是360手 ...
- JavaScript入门(10)
一.Window对象 window对象是BOM的核心,window对象指当前的浏览器窗口 window对象方法 二.JavaScript计时器 在JavaScript中,我们可以在设定的时间间隔之后来 ...
- MYSQL之性能优化 ----MySQL性能优化必备25条
今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我 们程序员需要去关注的事情.当我们去设计数据库表结构,对操作数 ...
- PHP的几个特殊符号意义
有些特殊符号需要特殊记忆,希望对你的编程有帮助! 方法/步骤 1 $ 这个符号的意思是:变量 2 & 这个符号的意思是:变量的地址(加在变量前) 3 @ 这个符号的意思是:不显示错误信息(加在 ...