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 题目描述 ...
随机推荐
- The file “base.app” couldn’t be opened because you don’t have permission to view it.
Base项目是在Xcode7上创建的,升级Xcode8以后,编译时候提示错误: The file "base.app" couldn't be opened because you ...
- xCode5 在ios7模拟器中出现__cxa_throw _pthread_exit错误
xCode5 在ios7模拟器中出现__cxa_throw _pthread_exit错误 2013年10月28日 ⁄ 综合 ⁄ 共 233字 ⁄ 字号 小 中 大 ⁄ 评论关闭 在项目中用模拟器 ...
- ArrayList 浅析示例
package com.smbea.demo; import java.util.ArrayList; import java.util.Iterator; import java.util.List ...
- java入门知识点结构
第一部分 计算机程序和面向对象编程 编程语言种类: 机器语言:2进制(0和1) 汇编语言:英文字符缩写和助记符 高级语言: 面向过程:面向过程是从微观上/细节上处理具体事务. C语言 面向对象: ...
- MS SQL错误:SQL Server failed with error code 0xc0000000 to spawn a thread to process a new login or connection. Check the SQL Server error log and the Windows event logs for information about possible related problems
早晨宁波那边的IT人员打电话告知数据库无法访问了.其实我在早晨也发现Ignite监控下的宁波的数据库服务器出现了异常,但是当时正在检查查看其它服务器发过来的各类邮件,还没等到我去确认具体情 ...
- Hadoop 之 MapReduce 框架演变详解
经典版的MapReduce 所谓的经典版本的MapReduce框架,也是Hadoop第一版成熟的商用框架,简单易用是它的特点,来看一幅图架构图: 上面的这幅图我们暂且可以称谓Hadoop的V1.0版本 ...
- Ubuntu搭建Note.Js 平台
1. 安装nodeJs和npm apt-get install nodejsapt-get install npm 2 .node有一个模块叫n,是专门用来管理node.js的版本的.首先安装n模块: ...
- Linux find命令的用法实践
一.find命令简介 Linux下find命令在目录结构中搜索文件,并执行指定的操作.Linux下find命令提供了相当多的查找条件,功能很强大.由于find具有强大的功能,所以它的选项也很多,其中大 ...
- [转]推荐highcharts学习网址
highcharts学习网址1:http://www.hcharts.cn/docs/index.php?doc=basic(百度highcharts中文教程即可) highcharts学习网址2:h ...
- 帆软报表FineReport数据连接中游标问题解决方案汇总
1. 概念 在数据库中, 游标是一个十分重要的概念.游标是一种能从包括多条数据记录的结果集中,每次提取一条记录的机制. 用SQL语言从数据库中检索数据后,结果放在内存的一块区域中,往往是一个含有多个记 ...