传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=2453

题目大意:

(1)       若第一个字母为“M”,则紧接着有三个数字LRW。表示对闭区间 [LR] 内所有英雄的身高加上W
(2)       若第一个字母为“A”,则紧接着有三个数字LRC。询问闭区间 [LR] 内有多少英雄的身高大于等于C
题解:分块+二分咯
代码:
 #include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<cmath>
#define maxn 1000001
using namespace std;
int add[maxn],a[maxn],b[maxn],pos[maxn];
char ch[];
int n,m,blo,num;
int read()
{
int x=; char ch; bool bo=;
while (ch=getchar(),ch<''||ch>'') if (ch=='-') bo=;
while (x=x*+ch-'',ch=getchar(),ch>=''&&ch<='');
if (bo) return -x; return x;
}
void resort(int x)
{
int l=(x-)*blo+,r=min(x*blo,n);
for (int i=l; i<=r; i++)
b[i]=a[i];
sort(b+l,b+r+);
}
int find(int x,int v)
{
int l=(x-)*blo+,r=min(x*blo,n);
int last=r;
while (l<=r)
{
int mid=(l+r)>>;
if (b[mid]<v) l=mid+;
else r=mid-;
}
return last-l+;
}
int query(int x,int y,int v)
{
int sum=;
if (pos[x]==pos[y])
{
for (int i=x; i<=y; i++)
if (a[i]+add[pos[i]]>=v) sum++;
}
else
{
for(int i=x;i<=pos[x]*blo;i++)
if(a[i]+add[pos[i]]>=v)sum++;
for(int i=(pos[y]-)*blo+;i<=y;i++)
if(a[i]+add[pos[i]]>=v)sum++;
}
for (int i=pos[x]+; i<pos[y]; i++)
sum+=find(i,v-add[i]);
return sum;
}
void ins(int x,int y,int v)
{
if (pos[x]==pos[y])
{
for (int i=x; i<=y; i++) a[i]+=v;
}
else
{
for (int i=x; i<=blo*pos[x]; i++) a[i]+=v;
for (int i=(pos[y]-)*blo+; i<=y; i++) a[i]+=v;
}
resort(pos[x]); resort(pos[y]);
for (int i=pos[x]+; i<pos[y]; i++)
add[i]+=v;
}
int main()
{
n=read(); m=read();
blo=int(sqrt(n));
for (int i=; i<=n; i++) a[i]=b[i]=read(),pos[i]=(i-)/blo+;
num=(n-)/blo+;
for (int i=; i<=num; i++) resort(i);
for (int i=; i<=m; i++)
{
scanf("%s",ch+); int x=read(),y=read(),z=read();
if (ch[]=='M') ins(x,y,z);
else printf("%d\n",query(x,y,z));
}
}

bzoj2453的更多相关文章

  1. BZOJ2453维护队列&&BZOJ2120数颜色

    2016-05-28 11:20:22 共同的思路: 维护某种颜色上一次在哪里出现pre,可以知道当pre<询问的l时更新答案 块内按照pre排序 修改的时候重新O(n)扫一遍,如果和之前的不一 ...

  2. 【BZOJ2453】维护队列/【BZOJ2120】数颜色 分块

    [BZOJ2453]维护队列 Description 你小时候玩过弹珠吗? 小朋友A有一些弹珠,A喜欢把它们排成队列,从左到右编号为1到N.为了整个队列鲜艳美观,小朋友想知道某一段连续弹珠中,不同颜色 ...

  3. [BZOJ2453]维护队列|分块

    Description 你小时候玩过弹珠吗? 小朋友A有一些弹珠,A喜欢把它们排成队列,从左到右编号为1到N.为了整个队列鲜艳美观,小朋友想知道某一段连续弹珠中,不同颜色的弹珠有多少.当然,A有时候会 ...

  4. [bzoj2453]维护队列_带修改莫队

    维护队列 bzoj-2453 题目大意:给定一个n个数序列,支持查询区间数的种类数,单点修改.不强制在线. 注释:$1\le n,m\le 10^5$. 想法: 带修改莫队裸题. 如果没有修改操作的话 ...

  5. 【BZOJ-2453&2120】维护队列&数颜色 分块 + 带修莫队算法

    2453: 维护队列 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 653  Solved: 283[Submit][Status][Discuss] ...

  6. BZOJ2453: 维护队列

    2453: 维护队列 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 183  Solved: 89[Submit][Status] Descripti ...

  7. bzoj2120: 数颜色 &&bzoj2453: 维护队列

    题目大意: 你小时候玩过弹珠吗? 小朋友A有一些弹珠,A喜欢把它们排成队列,从左到右编号为1到N.为了整个队列鲜艳美观,小朋友想知道某一段连续弹珠中,不同颜色的弹珠有多少.当然,A有时候会依据个人喜好 ...

  8. BZOJ2453:维护队列——题解

    http://www.lydsy.com/JudgeOnline/problem.php?id=2453 Description 你小时候玩过弹珠吗? 小朋友A有一些弹珠,A喜欢把它们排成队列,从左到 ...

  9. 【bzoj2453】维护队列/【bzoj2120】数颜色 分块+二分

    题目描述 你小时候玩过弹珠吗? 小朋友A有一些弹珠,A喜欢把它们排成队列,从左到右编号为1到N.为了整个队列鲜艳美观,小朋友想知道某一段连续弹珠中,不同颜色的弹珠有多少.当然,A有时候会依据个人喜好, ...

随机推荐

  1. Redis(1)在windows环境下的安装和测试

    初次准备使用redis,一个著名的nosql缓存数据库. 这里是第一天,就简单写一下windows下的安装,遇到的一些问题,然后简单的使用和测试,之后会在代码中使用和测试. 之后还会在生产环境中进行测 ...

  2. JavaScript基础教程

    功能介绍: (1)数据验证 弹出提示的对话框,产生判断的效果. (2)气泡提示窗口 右下角等等一类的窗口 (3)产生新窗口 (4)无边框窗口背景变灰,也是可以节约系统资源的

  3. Android面试经验1

    1,java基本数据类型. Byte.short.int.long.float.double.char.boolean. 1         2       2     2      4       ...

  4. Android Studio 下载地址【包括国内本地下载】

    Android Studio 下载地址,目前最新可下载地址,尽量使用下载工具. Android Studio正式发布,给Android开发者带来了不小的惊喜.但是下载地址却不给力,国内似乎无法正常下载 ...

  5. 搭建App主流框架_纯代码搭建(OC)

    转载自:http://my.oschina.net/hejunbinlan/blog/529778?fromerr=EmSuX7PR 搭建主流框架界面 源码地址在文章末尾 达成效果 效果图 注:本文部 ...

  6. PAT (Advanced Level) 1061. Dating (20)

    简单模拟. #include<stdio.h> #include<string.h> ],s2[],s3[],s4[]; ][]={"MON ", &quo ...

  7. CentOS 7 安装 GlusterFS

    CentOS 7 GlusterFS 环境说明: 3台机器安装 GlusterFS 组成一个集群. 使用 docker volume plugin GlusterFS 服务器: 10.6.0.140 ...

  8. sitemap制作

    sitemap.xml生成方法(asp和php)(转) http://teachmyself.blog.163.com/blog/static/18881422920119895435272/ sit ...

  9. iOS开发——GCDAsyncSocket

    新进的这家公司搞智能家居,就随便整理一下其相关技术吧!首先,从GCDAsyncSocket的使用问题着手. 正如名称一样GCDAsyncSocket开源类库是以苹果的GCD多任务处理机制完成的一个异步 ...

  10. Mysql数据备份与恢复命令

    转载:原文地址 一.备份常用操作基本命令 1.备份命令mysqldump格式 格式:mysqldump -h主机名 -P端口 -u用户名 -p密码 –database 数据库名 > 文件名.sq ...