【分块】bzoj3343: 教主的魔法
3343: 教主的魔法
Time Limit: 10 Sec Memory Limit: 256 MB
Submit: 631 Solved: 272
[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
新开一个数组b
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath> #define maxn 1000001 using namespace std; int n,a[maxn],team[maxn],b[maxn],str[maxn],end[maxn],tag[]; inline int in()
{
int x=;char ch=getchar();
while(ch<''||ch>'')ch=getchar();
while(ch<=''&&ch>='')x=x*+ch-'',ch=getchar();
return x;
} void pre()
{
int T=sqrt(n),cnt;
for(int i=;i<=n;i++)
team[i]=(i-)/T+;
cnt=team[n];
for(int i=;i<=n;i++)end[team[i]]=i,b[i]=a[i];
for(int i=n;i>=;i--)str[team[i]]=i;
for(int i=;i<=cnt;i++)
sort(str[i]+b,b+end[i]+);
} void add(int l,int r,int c)
{
if(team[l]==team[r]){
for(int i=l;i<=r;i++)a[i]+=c;
for(int i=str[team[l]];i<=end[team[r]];i++)b[i]=a[i];
sort(str[team[l]]+b,end[team[l]]+b);
return;
}
for(int i=l;i<=end[team[l]];i++)
a[i]+=c;
for(int j=str[team[r]];j<=r;j++)
a[j]+=c;
for(int i=str[team[l]];i<=end[team[l]];i++)b[i]=a[i];
for(int i=str[team[r]];i<=end[team[r]];i++)b[i]=a[i];
sort(str[team[l]]+b,end[team[l]]+b+);
sort(str[team[r]]+b,end[team[r]]+b+);
for(int i=team[l]+;i<=team[r]-;i++)
tag[i]+=c;
} int binary_search(int pos,int c)
{
int l=str[pos],r=end[pos];
if(b[r]<c)return r+;
while(l<=r)
{
int mid=(l+r)>>;
if(b[mid]<c)l=mid+;
else r=mid-;
}
return l;
} int query(int l,int r,int c)
{
int ans=;
if(team[l]==team[r]){
for(int i=l;i<=r;i++)if(a[i]+tag[team[l]]>=c)ans++;
return ans;
}
for(int i=l;i<=end[team[l]];i++)
if(a[i]+tag[team[l]]>=c)ans++;
for(int j=str[team[r]];j<=r;j++)
if(a[j]+tag[team[r]]>=c)ans++;
for(int i=team[l]+;i<=team[r]-;i++)
ans+=end[i]-binary_search(i,c-tag[i])+;
return ans;
} int main()
{
int q,u,v,c;
char sb;
n=in();q=in();
for(int i=;i<=n;i++)a[i]=in();
pre();
for(int i=;i<=q;i++)
{
sb=;
while(sb!='A'&&sb!='M')sb=getchar();
u=in(),v=in(),c=in();
if(sb=='A')printf("%d\n",query(u,v,c));
else add(u,v,c);
}
return ;
}
【分块】bzoj3343: 教主的魔法的更多相关文章
- [BZOJ3343]教主的魔法
[BZOJ3343]教主的魔法 试题描述 教主最近学会了一种神奇的魔法,能够使人长高.于是他准备演示给XMYZ信息组每个英雄看.于是N个英雄们又一次聚集在了一起,这次他们排成了一列,被编号为1.2.… ...
- BZOJ3343: 教主的魔法 分块
2016-05-28 10:27:19 题目:http://www.lydsy.com/JudgeOnline/problem.php?id=3343 比较显然的分块题,分块后块内排序,维护整块的附 ...
- 【分块】教主的魔法 @洛谷P2801/upcexam3138
时间限制: 1 Sec 内存限制: 128 MB 题目描述 教主最近学会了一种神奇的魔法,能够使人长高.于是他准备演示给XMYZ信息组每个英雄看.于是N个英雄们又一次聚集在了一起,这次他们排成了一列, ...
- [bzoj3343]教主的魔法——分块
Brief description 给定一个数列,您需要支持一下两种操作: 给[l,r]同加一个数 询问[l,r]中有多少数字大于或等于v Algorithm analyse 这个题一时想不到什么有效 ...
- bzoj3343 教主的魔法【分块入门】By cellur925
题意:维护一个数列,给出维护区间加法,询问区间内大于等于某个值的元素个数. 算法:分块.因为本题第二问显然可以用二分的思想,但是这貌似并不符合区间可加性,线段树好像就不好用了呢.所以本蒟蒻学习了分块. ...
- BZOJ-3343教主的魔法+分块(大块排序二分)
传送门:https://www.luogu.org/problemnew/show/P2801 参考:http://hzwer.com/2784.html 感觉思路无比清晰:) ps:我在洛谷A的, ...
- bzoj3343: 教主的魔法 分块 标记
修改:两边暴力重构,中间打标记.复杂度:O(n0.5) 查询:中间二分两边暴力.O(n0.5logn0.5) 总时间复杂度O(n*n0.5logn0.5) 空间复杂度是n级别的 标记不用下传因为标记不 ...
- bzoj千题计划154:bzoj3343: 教主的魔法
http://www.lydsy.com/JudgeOnline/problem.php?id=3343 high记录原始身高 HIGH记录每块排序之后的身高 不满一块的直接对high操作,重排之后再 ...
- 【BZOJ-3343】教主的魔法 分块
3343: 教主的魔法 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 950 Solved: 414[Submit][Status][Discuss ...
随机推荐
- 【Android】ADB常用指令与logcat日志(转)
ADB命令简介 ADB是一个功能强大的命令行工具.通过它可以直接和模拟器或真机进行交互.它是一个具有客户端和服务器端的程序. 它主要由三个部分组成: 客户端,它运行在你的开发机上,你可以通过执行adb ...
- AjaxPro使用方法
无意中看到同事用AjaxPro用,看到很不错,特长是前后台传输数据特别方便. 最好的教材就是拿到就可以用,方便大家. 以前数据传输用FORM提交,或者在前台用JASON拼接然后通过AJAX方式提交.总 ...
- .net chart(图表)控件的使用-System.Windows.Forms.DataVisualization.dll
这个案例指在介绍微软这套免费又功能强大的图表控件Microsoft Chart Controls for Microsoft .NET Framework 3.5,通过它,可让您的项目及报表,轻松套用 ...
- GitHub使用教程for VS2012
转自:http://www.cnblogs.com/yc-755909659/p/3753355.html 一直以来都想使用Git来管理自己平时积累的小代码,就是除了工作之外的代码了.有时候自己搞个小 ...
- (转)实战Memcached缓存系统(4)Memcached的CAS协议
1. 什么是CAS协议 很多中文的资料都不会告诉大家CAS的全称是什么,不过一定不要把CAS当作中国科学院(China Academy of Sciences)的缩写.Google.com一下,CAS ...
- Object类型
Object类型 我们看到的大多数引用类型值都是Object类型的实例,虽然Object类型不具备多少功能,但是在储存和传输数据上的确是不错的选择. 2.对象字面量表示法 调用Object构造函数: ...
- PerformSelector may cause a leak because its selector is unknown 解决方法
我的技术博客经常被流氓网站恶意爬取转载.请移步原文:http://www.cnblogs.com/hamhog/p/3801030.html,享受整齐的排版.有效的链接.正确的代码缩进.更好的阅读体验 ...
- 《SELinux安全上下文的管理(含图)》RedHat6.3——步骤详细、条理清晰
1.为什么浏览器只识别/var/www/html下的文件? 2.为什么不识别别的目录下的index.html文件呢? 3.这里牵扯到身份证,先安装软件包. 4.打开selinux 5.建立一个新的目录 ...
- 译文:Javascript-function's return
个人理解+google翻译.如有错误,请指正.原文来自MDN:return 概要 由function返回指定值. 版本信息 实现: JavaScript 1.0, NES 2.0(NES:游戏机在欧洲 ...
- Projected Coordinate Systems
Coordinate Systems Projected Coordinate Systems This is an archive of a previous version of the ArcG ...