bzoj3343
3343: 教主的魔法
Time Limit: 10 Sec Memory Limit: 256 MB
Submit: 1178 Solved: 527
[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
Source
分块裸题,每个块内排序维护顺序,修改时如果整块则打标记,否则暴力单点修改。查询每块二分查找lower_bound,然后拿块的右边界减一减,加入答案。
下标不要搞错,pos[x] 和 x 坑了半天,小数据还拍不出来
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
#define N 1000010
struct data
{
int num,tag;
}d[N];
int l[N],pos[N],r[N],tag[N];
int n,q;
bool cp(data x,data y)
{
return x.num+x.tag<y.num+y.tag;
}
void add(int a,int b,int delta)
{
while(a<=b)
{
if(a==l[pos[a]]&&b>=r[pos[a]])
{
d[pos[a]].tag+=delta;
}
else
{
for(int i=a;i<=min(r[pos[a]],b);i++)
d[i].num+=delta;
sort(d+l[pos[a]],d+r[pos[a]]+,cp);
}
a=r[pos[a]]+;
}
}
int query(int a,int b,int delta)
{
int ret=;
// printf("%d %d\n",d[1].num,d[2].num);
for(int i=a;i<=b;i=r[pos[i]]+)
{
int ll=i,rr=min(r[pos[i]],b);
while(rr-ll>)
{
int mid=(ll+rr)/;
if(d[mid].num+d[pos[mid]].tag>=delta) rr=mid;
else ll=mid;
}
while (d[ll].num+d[pos[ll]].tag<delta&&ll<=rr) ll++;
// printf("ll=%d r[pos[i]]=%d\n",ll,r[pos[i]]);
ret+=min(r[pos[i]],b)-ll+;
}
return ret;
}
int main()
{
memset(l,0x3f3f,sizeof(l));
scanf("%d%d",&n,&q);
int size=(int)(sqrt(n));
for(int i=;i<=n;i++)
{
scanf("%d",&d[i].num);
pos[i]=(i-)/size+;
l[pos[i]]=min(l[pos[i]],i);
r[pos[i]]=max(r[pos[i]],i);
}
for(int i=;i<=pos[n];i++)
{
// printf("l=%d r=%d\n",l[i],r[i]);
sort(d+l[i],d+r[i]+,cp);
}
// for(int i=1;i<=n;i++)
// {
// printf("%d ",d[i].num);
// }
// printf("\n");
while(q--)
{
char s[]; scanf("%s",s);
int a,b,c; scanf("%d%d%d",&a,&b,&c);
if(s[]=='M') add(a,b,c);
else printf("%d\n",query(a,b,c));
}
return ;
}
bzoj3343的更多相关文章
- [BZOJ3343]教主的魔法
[BZOJ3343]教主的魔法 试题描述 教主最近学会了一种神奇的魔法,能够使人长高.于是他准备演示给XMYZ信息组每个英雄看.于是N个英雄们又一次聚集在了一起,这次他们排成了一列,被编号为1.2.… ...
- 【bzoj3343】教主的魔法 分块
[bzoj3343]教主的魔法 2014年4月26日8092 Description 教主最近学会了一种神奇的魔法,能够使人长高.于是他准备演示给XMYZ信息组每个英雄看.于是N个英雄们又一次聚集在了 ...
- 【BZOJ-3343】教主的魔法 分块
3343: 教主的魔法 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 950 Solved: 414[Submit][Status][Discuss ...
- 【BZOJ3343】教主的魔法 分块+二分
Description 教主最近学会了一种神奇的魔法,能够使人长高.于是他准备演示给XMYZ信息组每个英雄看.于是N个英雄们又一次聚集在了一起,这次他们排成了一列,被编号为1.2.…….N. 每个人的 ...
- BZOJ3343: 教主的魔法 分块
2016-05-28 10:27:19 题目:http://www.lydsy.com/JudgeOnline/problem.php?id=3343 比较显然的分块题,分块后块内排序,维护整块的附 ...
- c++之路进阶——bzoj3343(教主的魔法)
F.A.Qs Home Discuss ProblemSet Status Ranklist Contest ModifyUser gryz2016 Logout 捐赠本站 Notice:由于本OJ ...
- 【分块】bzoj3343: 教主的魔法
3343: 教主的魔法 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 631 Solved: 272[Submit][Status][Discuss ...
- bzoj千题计划154:bzoj3343: 教主的魔法
http://www.lydsy.com/JudgeOnline/problem.php?id=3343 high记录原始身高 HIGH记录每块排序之后的身高 不满一块的直接对high操作,重排之后再 ...
- BZOJ3343 & 洛谷2801:教主的魔法——题解
http://www.lydsy.com/JudgeOnline/problem.php?id=3343 https://www.luogu.org/problemnew/show/2801 题目描述 ...
随机推荐
- 关于C语言函数调用压栈和返回值问题的疑惑
按照C编译器的约定调用函数时压栈的顺序是从右向左,并且返回值是保存在eax寄存器当中.这个命题本该是成立的,下面用一个小程序来反汇编观察执行过程: #include<stdio.h> in ...
- js---OOP浅谈
对象化编程-------简单地去理解就是把javascript能涉及到的范围分成各种对象,对象下面再次划分对象.编程出发点多是对象,或者说基于对象.所说的对象既包含变量,网页,窗口等等 对象的含义 ...
- 《java JDK7 学习笔记》之对象封装
1.构造函数实现对象初始化流程的封装.方法封装了操作对象的流程.java中还可以使用private封装对象私有数据成员.封装的目的主要就是隐藏对象细节,将对象当做黑箱子进行操作. 2.在java命名规 ...
- js鼠标滚轮事件
不多说,直接上代码. //非ie document.body.onmousewheel = function(event) { event = event || window.event; conso ...
- jedis2.4.2连接池配置说明
大多数情况使用jedis时用的都是默认配置,但有的时候为了调优,提供应用程序的性能,那我们就要知道jedis中参数的意义. JedisPoolConfig config = new JedisPool ...
- 框架基础之Hibernate简介
框架基础之Hibernate简介 1.什么是Hibernate? Hibernate是一个开发源代码的对象关系映射框架,它对JDBC进行非常轻量级的对象封装,使得程序员可以随心所欲地使用对象编程思维来 ...
- [WPF系列]-Layout
DockPanel The nice thing about dock panels is they already fill all the available space. LastChildFi ...
- Web报表工具JS开发之日期校验
在报表开发过程中,我们常常需要对查询界面进行日期校验.例如有两个参数:开始日期和结束日期,我们要校验的是:开始日期与结束日期不能为空,结束日期必须在开始日期之后以及结束日期必须在开始日期后的某个时间段 ...
- 洛谷P1262 间谍网络[强连通分量 BFS]
题目描述 由于外国间谍的大量渗入,国家安全正处于高度的危机之中.如果A间谍手中掌握着关于B间谍的犯罪证据,则称A可以揭发B.有些间谍收受贿赂,只要给他们一定数量的美元,他们就愿意交出手中掌握的全部情报 ...
- 移位操作(>>、<<)
public static void main(String[] args) { /** 移位就是二进制的数往左或右移动,因为接近计算机底层,所以速度比较快 * 8 4 2 1 * * 7 化为二进制 ...