传送门: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. P图

    照片名称:调出照片柔和的蓝黄色-简单方法,1.打开原图素材,按Ctrl + J把背景图层复制一层,点通道面板,选择蓝色通道,图像 > 应用图像,图层为背景,混合为正片叠底,不透明度50%,反相打 ...

  2. dpkg -P xx

    dpkg -l | grep ^rc | cut -d' ' -f3|xargs dpkg -P http://www.linuxquestions.org/questions/debian-26/h ...

  3. regress_partition.sql

    --ENV --UAT @/test/change/env/env_test_uat.sql set echo on time on timing on set feedback on set pag ...

  4. CentOS 修改DNS,固定IP等操作(网络)

    1.修改DNS 修改对应网卡的DNS的配置文件 vi /etc/resolv.conf 内容格式(西工大) nameserver 114.114.114.114 nameserver 202.117. ...

  5. gridview如何隐藏一列数据,但又可以使用这列数据

    解决方案在RowCreated事件中书写如下代码 void GridView1_RowCreated(object sender, GridViewRowEventArgs e)    {       ...

  6. Android开发之InstanceState详解(转)---利用其保存Activity状态

    Android开发之InstanceState详解   本文介绍Android中关于Activity的两个神秘方法:onSaveInstanceState() 和 onRestoreInstanceS ...

  7. linux系统下c程序分多文件实现

    对于一个整数数组排序,按从小到大排序,数组元素个数不定.要求多文件实现 1,排序的函数作为一个文件 输出结果作为一个程序 主函数作为一个文件 运行程序 gcc -o main main.c paixu ...

  8. 发布时去掉 debug 和 提醒日志,简单无侵入

    在 proguard 文件中加入下面代码,让发布时去掉 debug 和 提醒日志,简单无侵入! -assumenosideeffects class android.util.Log { public ...

  9. Python3基础 当函数中的局部变量与全局变量同名了,各管各的

    镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.-------------------------------------- ...

  10. MyBatis部分细节归档

    1. xml中如果要使用到特殊的字符,比如> 或者< 等,使用 <![CDATA[<]> 进行包裹,避免解析XML的时候出错. 2. 后续还有内容,待总结.