bzoj千题计划154:bzoj3343: 教主的魔法
http://www.lydsy.com/JudgeOnline/problem.php?id=3343
high记录原始身高
HIGH记录每块排序之后的身高
不满一块的直接对high操作,重排之后再赋值给HIGH
块内直接打标记
查询时,不满一块的直接查,一整块的在HIGH内二分块内第一个>=C-标记的点
#include<cmath>
#include<cstdio>
#include<iostream>
#include<algorithm> using namespace std; #define N 1000001 int bl[N];
int high[N],HIGH[N],tmp[N];
int L[],R[],tag[]; void read(int &x)
{
x=; char c=getchar();
while(!isdigit(c)) c=getchar();
while(isdigit(c)) { x=x*+c-''; c=getchar(); }
} void modify(int l,int r,int w)
{
if(bl[l]==bl[r])
{
for(int i=l;i<=r;++i) high[i]+=w;
for(int i=L[bl[l]];i<=R[bl[l]];++i) tmp[i]=high[i];
sort(tmp+L[bl[l]],tmp+R[bl[l]]+);
for(int i=L[bl[l]];i<=R[bl[l]];++i) HIGH[i]=tmp[i];
return;
}
for(int i=l;i<=R[bl[l]];++i) high[i]+=w;
for(int i=L[bl[l]];i<=R[bl[l]];++i) tmp[i]=high[i];
sort(tmp+L[bl[l]],tmp+R[bl[l]]+);
for(int i=L[bl[l]];i<=R[bl[l]];++i) HIGH[i]=tmp[i];
for(int i=L[bl[r]];i<=r;++i) high[i]+=w;
for(int i=L[bl[r]];i<=R[bl[r]];++i) tmp[i]=high[i];
sort(tmp+L[bl[r]],tmp+R[bl[r]]+);
for(int i=L[bl[r]];i<=R[bl[r]];++i) HIGH[i]=tmp[i];
for(int i=bl[l]+;i<bl[r];++i) tag[i]+=w;
} int find(int x,int y,int w)
{
int l=x,r=y,mid,ok=y+;
while(l<=r)
{
mid=l+r>>;
if(HIGH[mid]>=w) ok=mid,r=mid-;
else l=mid+;
}
return y-ok+;
} void ask(int l,int r,int w)
{
int ans=;
if(bl[l]==bl[r])
{
for(int i=l;i<=r;++i)
if(high[i]+tag[bl[l]]>=w) ans++;
cout<<ans<<'\n';
return;
}
for(int i=l;i<=R[bl[l]];++i)
if(high[i]+tag[bl[l]]>=w) ans++;
for(int i=L[bl[r]];i<=r;++i)
if(high[i]+tag[bl[r]]>=w) ans++;
for(int i=bl[l]+;i<bl[r];++i) ans+=find(L[i],R[i],w-tag[i]);
cout<<ans<<'\n';
} int main()
{
int n,m;
read(n);
read(m);
for(int i=;i<=n;++i)
{
read(high[i]);
HIGH[i]=high[i];
}
int siz=sqrt(n);
for(int i=;i<=n;++i) bl[i]=(i-)/siz+;
for(int i=;i<=bl[n];++i)
{
L[i]=R[i-]+;
R[i]=L[i]+siz-;
}
R[bl[n]]=n;
for(int i=;i<=bl[n];++i) sort(HIGH+L[i],HIGH+R[i]+);
char s[];
int l,r,w;
while(m--)
{
scanf("%s",s);
read(l);
read(r);
read(w);
if(s[]=='M') modify(l,r,w);
else ask(l,r,w);
}
return ;
}
bzoj千题计划154:bzoj3343: 教主的魔法的更多相关文章
- bzoj千题计划300:bzoj4823: [Cqoi2017]老C的方块
http://www.lydsy.com/JudgeOnline/problem.php?id=4823 讨厌的形状就是四联通图 且左右各连一个方块 那么破坏所有满足条件的四联通就好了 按上图方式染色 ...
- bzoj千题计划196:bzoj4826: [Hnoi2017]影魔
http://www.lydsy.com/JudgeOnline/problem.php?id=4826 吐槽一下bzoj这道题的排版是真丑... 我还是粘洛谷的题面吧... 提供p1的攻击力:i,j ...
- bzoj千题计划280:bzoj4592: [Shoi2015]脑洞治疗仪
http://www.lydsy.com/JudgeOnline/problem.php?id=4592 注意操作1 先挖再补,就是补的范围可以包含挖的范围 SHOI2015 的题 略水啊(逃) #i ...
- bzoj千题计划177:bzoj1858: [Scoi2010]序列操作
http://www.lydsy.com/JudgeOnline/problem.php?id=1858 2018 自己写的第1题,一遍过 ^_^ 元旦快乐 #include<cstdio> ...
- bzoj千题计划317:bzoj4650: [Noi2016]优秀的拆分(后缀数组+差分)
https://www.lydsy.com/JudgeOnline/problem.php?id=4650 如果能够预处理出 suf[i] 以i结尾的形式为AA的子串个数 pre[i] 以i开头的形式 ...
- bzoj千题计划304:bzoj3676: [Apio2014]回文串(回文自动机)
https://www.lydsy.com/JudgeOnline/problem.php?id=3676 回文自动机模板题 4年前的APIO如今竟沦为模板,,,╮(╯▽╰)╭,唉 #include& ...
- bzoj千题计划292:bzoj2244: [SDOI2011]拦截导弹
http://www.lydsy.com/JudgeOnline/problem.php?id=2244 每枚导弹成功拦截的概率 = 包含它的最长上升子序列个数/最长上升子序列总个数 pre_len ...
- bzoj千题计划278:bzoj4590: [Shoi2015]自动刷题机
http://www.lydsy.com/JudgeOnline/problem.php?id=4590 二分 这么道水题 没long long WA了两发,没判-1WA了一发,二分写错WA了一发 最 ...
- bzoj千题计划250:bzoj3670: [Noi2014]动物园
http://www.lydsy.com/JudgeOnline/problem.php?id=3670 法一:KMP+st表 抽离nxt数组,构成一棵树 若nxt[i]=j,则i作为j的子节点 那么 ...
随机推荐
- Hibernate 与 mybatis 区别
JAVA面试中问及HIBERNATE与 MYBATIS的对比,在这里做一下总结 我是一名java开发人员,hibernate以及mybatis都有过学习,在java面试中也被提及问道过,在项目实践 ...
- The user survey(用户调查)
在周末,我们找了一些人来进行了一个调查,鉴于选择困难,我们只找到了几个真正的小学生,没有找到家长,其余那些都是找大学生来做调查的,我们和他们说,让他们把自己的立场看成是小学生或家长.下面是我们整理出来 ...
- 简单Window下 Android Studio的安装
(1)首先安装JDK 下载JDK 本人觉得官方网站下JDK比较慢,可以直接百度JDK,(如果是64位 百度搜索记得+64位)
- Hive与Hbase的区别
1. 两者分别是什么? Apache Hive是一个构建在Hadoop基础设施之上的数据仓库.通过Hive可以使用HQL语言查询存放在HDFS上的数据.HQL是一种类SQL语言,这种语言最终被 ...
- iOS开发 tableView点击下拉扩展 + 内嵌collectionView上传图片效果
---恢复内容开始--- //需要的效果 1.设置window的根视图控制器为一个UITableViewController #import "AppDelegate.h"#imp ...
- 项目上线,php的错误信息必须不让其在页面中显示给客户,
对于PHP开发者来 说,一旦某个产品投入使用,应该立即将 display_errors选项关闭,以免因为这些错误所透露的路径.数据库连接.数据表等信息而遭到黑客攻击.但是,任何一个产品在投入使用后,都 ...
- [转帖] 中国SaaS死或生之二: ERP两大邪术,尽出歪门邪路 ---- 挺好玩的
中国SaaS死或生之二: ERP两大邪术,尽出歪门邪路 http://www.cniteyes.com/archives/33753 文章摘要:在数字化浪潮中,油腻ERP大叔的那些“歪门邪术” ...
- 【php】new static的用法
在一个类中,常见的是new self()操作,代表返回自身类的实例. 当父类中存在方法,然后每个子类继承于父类,调用这个方法会返回自身的实例化对象, <?php class A { functi ...
- js全端
js是世界上最好的语言之一,或许可以不用加之一 我是个js游戏前端开发者,但是我不局限于只是开发h5游戏,微信小游戏... js很强大很强大很强大,没有哪种语言能通吃,除了js. 网页, app, 服 ...
- Memcache 服务管理脚本
自定义脚本将memcached作为系统服务启动以及开机启动. 一.编写脚本 在/etc/init.d/目录下新建一个脚本,名称为:memcached.内容如下: vi /etc/init.d/memc ...