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 题目描述 ...
随机推荐
- 友盟(Swift)-集成、统计用户数量、具体页面访问数量、具体按钮点击数量
什么是友盟.有什么用? 这些傻瓜问题这里就不解释了,可以自己百度去. 友盟提供的文档和demo都是oc的,这里用swift写了一个小demo,在此分享一下. 步骤1:友盟后台注册应用(iOS),拿到a ...
- iOS 数字滚动 类似于老 - 虎- 机的效果
效果图 具体实现代码如下 ZCWScrollNumView.h文件 #import <UIKit/UIKit.h> typedef enum { ZCWScrollNumAnimation ...
- tableView简单的动画效果
tableView 中一些动画效果通常都是实现willDisplayCell的方法来展示出一些动画的效果 (1).带有3D效果的小型动态展示 -(void)tableView:(UITableView ...
- Python聊天室
小编心语:锵锵锵!各位看官注意了啊,走过路过表错过!上篇博文主要介绍了基于基于Server-Sent Event的简单在线聊天室,相信不管各位是大牛.小牛还是跟小编一样的小白,可能觉得看得不够过瘾,区 ...
- IT人经济思维之创业 - 创业与投资系列文章
前面笔者曾经写过文(IT从业者的职业规划),介绍了IT从业者的职业规划,对职业路做了规划.然后,又写了文(IT从业者的职业道路(从程序员到部门经理) - 项目管理系列文章),从技术到管理的一个笔者自己 ...
- SQL SERVER 监控数据文件增长情况
在项目前期评估数据库的增长情况,然后根据数据库数据量的增长情况来规划存储的分配其实是一件比较麻烦的事情.因为项目没有上线,用什么来评估数据库的数据增长情况呢? 如果手头没有实际的数据,我们只能从表的数 ...
- Linux如何找出用户的创建时间
在Linux系统中,如何找到用户创建的时间呢? 其实是没有标准方法查找用户创建时间.下面再搜索了一些资料后,自己验证并测试了一下这些方法,仅供参考: 1:如果创建的用户有家目录,那么可以ls -l / ...
- PHP无限级分类的实现(不使用递归)
无限级分类在开发中经常使用,例如:部门结构.文章分类.无限级分类的难点在于“输出”和“查询”,例如 将文章分类输出为<ul>列表形式: 查找分类A下面所有分类包含的文章. 1.实现原理 在 ...
- SQLServer 日期函数大全
一.统计语句 1.--统计当前[>当天00点以后的数据] ) ) ORDER BY dateandtime DESC 2.--统计本周 3.--统计本月 4.统计当前 SELECT * FROM ...
- UNIX系统的显示时间何时会到达尽头
本文分为三个小块: 一.UNIX系统中时间的存储形式: 二. time_t 的最大值是多少: 三. 将time_t 的最大值转化为真实世界的时间: #---------------------# # ...