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的子节点 那么 ...
随机推荐
- 在WPF里实现计算器软件
一.具体代码 类代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; us ...
- 配置树莓派/Linux默认声卡设备
1.设置默认声卡为USB声卡 在$HOME下新建.asoundrc $cd $HOME $nano .asoundrc 输入以下内容 defaults.ctl.card 1 defaults.pcm. ...
- 网桥 以及 IEEE802.1D 生成树协议
(一)网桥 网桥是一个layer 2设备,能够连接两个不同的网段. 如图
- 实现二叉树(search)
★实验任务 可怜的 Bibi 刚刚回到家,就发现自己的手机丢了,现在他决定回头去搜索 自己的手机. 现在我们假设 Bibi 的家位于一棵二叉树的根部.在 Bibi 的心中,每个节点 都有一个权值 x, ...
- String 类 常用函数
构造方法摘要: String(byte[] bytes) 通过使用平台的默认字符集解码指定的 byte 数组,构造一个新的 String. String(char[] value) ...
- getResource()的使用总结 ;
1.通过ClassLoader来加载getResource()时不需要加 "/" 因为source是从main开始的; Thread.currentThread().getCont ...
- SCRIPT7002: XMLHttpRequest: 网络错误 0x2efe, 由于出现错误 00002efe 而导致此项操作无法完成
google中带中文参数可能查询,但是在IE带中文参数不能查询:报如下错误 SCRIPT7002: XMLHttpRequest: 网络错误 0x2efe, 由于出现错误 00002efe 而导致此项 ...
- [知乎]老狼:深入PCI与PCIe之二:软件篇
深入PCI与PCIe之二:软件篇 https://zhuanlan.zhihu.com/p/26244141 我们前一篇文章(深入PCI与PCIe之一:硬件篇 - 知乎专栏)介绍了PCI和PCIe的硬 ...
- win xp安装
Windows XP with sp3 VOL 微软原版下载: zh-hans_windows_xp_professional_with_service_pack_3_x86_cd_vl_x14-74 ...
- Java 继承和多态
Java 继承和多态 Java 继承 继承的概念 继承是java面向对象编程技术的一块基石,因 ...