ZROI #88
分析
我们考虑把每个A[i]考虑为山峰的高度,每次的B考虑为海平面
于是我们知道对于A[i]和A[i-1],如果A[i-1]<A[i]则在A[i-1]<B<=A[i]时会使陆地总数加一
于是树状数组维护即可
代码
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<cctype>
#include<cmath>
#include<cstdlib>
#include<queue>
#include<ctime>
#include<vector>
#include<set>
#include<map>
#include<stack>
using namespace std;
#define N cnt
int D[],a[],opt[],b[],c[],d[];
int id[],cnt;
int lb(int x){return x&(-x);}
void add(int x,int k){while(x<=N)D[x]+=k,x+=lb(x);}
void update(int le,int ri,int k){add(le,k),add(ri+,-k);}
int q(int x){int res=;while(x){res+=D[x];x-=lb(x);}return res;}
int wh(int x){return lower_bound(id+,id+cnt+,x)-id;}
int main(){
int n,m,i,j,k;
scanf("%d%d",&n,&m);
for(i=;i<=n;i++)scanf("%d",&a[i]),id[++cnt]=a[i];
for(i=;i<=m;i++){
scanf("%d",&opt[i]);
if(opt[i]==)scanf("%d",&b[i]),id[++cnt]=b[i];
else scanf("%d%d",&c[i],&d[i]),id[++cnt]=d[i];
}
sort(id+,id+cnt+);
cnt=unique(id+,id+cnt+)-id-;
for(i=;i<=n;i++)
if(a[i]>a[i-])
update(wh(a[i-])+,wh(a[i]),);
for(i=;i<=m;i++){
if(opt[i]==)printf("%d\n",q(wh(b[i])));
else {
if(a[c[i]]<a[c[i]+])update(wh(a[c[i]])+,wh(a[c[i]+]),-);
if(a[c[i]-]<a[c[i]])update(wh(a[c[i]-])+,wh(a[c[i]]),-);
a[c[i]]=d[i];
if(a[c[i]]<a[c[i]+])update(wh(a[c[i]])+,wh(a[c[i]+]),);
if(a[c[i]-]<a[c[i]])update(wh(a[c[i]-])+,wh(a[c[i]]),);
}
}
return ;
}
ZROI #88的更多相关文章
- 编写高质量代码:改善Java程序的151个建议(第6章:枚举和注解___建议88~92)
建议88:用枚举实现工厂方法模式更简洁 工厂方法模式(Factory Method Pattern)是" 创建对象的接口,让子类决定实例化哪一个类,并使一个类的实例化延迟到其它子类" ...
- long l=88;这个表达式是正确的,因为long比int类型大,会发生自动转换
long l=88;这个表达式是正确的,因为long比int类型大,会发生自动转换
- 重新想象 Windows 8.1 Store Apps (88) - 通信的新特性: 新的 HttpClient
[源码下载] 重新想象 Windows 8.1 Store Apps (88) - 通信的新特性: 新的 HttpClient 作者:webabcd 介绍重新想象 Windows 8.1 Store ...
- 程序清单 8-8 exec函数实例,a.out是程序8-9产生的可执行程序
/* ============================================================================ Name : test.c Author ...
- #有如下值集合[11,22,33,44,55,66,77,88,99,90...],将所有大于66值保存至字典的一个key中,将小于66的值保存至大二个key的值
#!/usr/bin/env python #有如下值集合[11,22,33,44,55,66,77,88,99,90...],将所有大于66值保存至字典的一个key中,将小于66的值保存至大二个ke ...
- leetcode 88
88. Merge Sorted Array Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as on ...
- BestCoder Round #88
传送门:BestCoder Round #88 分析: A题统计字符串中连续字串全为q的个数,预处理以下或加个cnt就好了: 代码: #include <cstdio> #include ...
- iisapp 命令 弹出 iisschlp.wsc [88,25] 属性值无效 progid
iisapp 命令 弹出 iisschlp.wsc [88,25] 属性值无效 progid 在执行iisapp.vbs时,可能会提示如下错误:Windows Script Component - f ...
- Part 86 to 88 Talking about Multithreading in C#
Part 86 Multithreading in C# What is a Process: Process is what the operating system uses to facil ...
随机推荐
- 条款51:编写new以及delete的时候需要固守常规
C++中delete一个指针之后,只是回收指针指向位置的空间,而指针本身的值不变.你需要手工将其赋值为NULL.注意的一点是delete NULL指针的时候不会有任何的事情发生 小结: o ...
- hdoj-1036-Average is not Fast Enough!(水题,坑)
题目链接:Average is not Fast Enough! #include <iostream> #include <cstring> #include <st ...
- Milking Time(DP)
个人心得:一开始自己找状态,是这么理解的,只要前面一个满足就等于此时的值加上d(n-1),否则就是不挖此时的比较d(n-1)和 d(n-2)+cost,不过仔细一想忽略了很多问题,你无法确定n-2和此 ...
- 微信小程序 写音乐播放器 slider组件 将value设置为0 真机测试滑块不能回到起点
最近在用微信小程序写一个音频播放页面,做时间进度的时候用到了slider插件,但是在自然播放完成,或者上/下切换的时候,将slider的value属性值设为0,开发工具上滑块会回到起点,有效.但是真机 ...
- 学习动态性能表(20)--v$waitstat
学习动态性能表 第20篇--V$WAITSTAT 2007.6.15 本视图保持自实例启动所有的等待事件统计信息.常用于当你发现系统存在大量的"buffer busy waits" ...
- 基于SSL的WCF传输安全
[实践]WCF传输安全1:前期准备之证书制作 [实践]WCF传输安全2:基于SSL的WCF匿名客户端 [实践]WCF传输安全3:基于SSL的WCF对客户端验证 [实践]WCF传输安全4:基 ...
- PADS Layout CAM 的中高级焊盘选项
PADS Layout CAM 的中高级焊盘选项 PADS CAM Gerber 输出非常灵活. 以至于很多人跳坑. 以这个这选项,最好的方式就是不勾.
- 如何让 PADS Layout 识别到板框
如何让 PADS Layout 识别到板框 在很久很久以前 PADS Laout 还是 PowerPCB 的时候,铺铜是不认识板框的. 当有铺铜时必须复制一份板框再设置为铺铜才可以. 但到了 PADS ...
- 《hadoop权威指南》关于hive的第一个小例子的演示
本文是<hadoop权威指南>关于hive的小例子,通过这个例子可以很好地看出来hive是个什么东西. 前提是已经配置好hive的远程连接版本的环境,我是用了MYSQL数据库保存元数据. ...
- fastjson --JSONObject 和JSONArray 转换
fastjson解析:resultValue=[ { "total": 1, "saleLists": [ ...