传送门

分析

我们考虑把每个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的更多相关文章

  1. 编写高质量代码:改善Java程序的151个建议(第6章:枚举和注解___建议88~92)

    建议88:用枚举实现工厂方法模式更简洁 工厂方法模式(Factory Method Pattern)是" 创建对象的接口,让子类决定实例化哪一个类,并使一个类的实例化延迟到其它子类" ...

  2. long l=88;这个表达式是正确的,因为long比int类型大,会发生自动转换

    long l=88;这个表达式是正确的,因为long比int类型大,会发生自动转换

  3. 重新想象 Windows 8.1 Store Apps (88) - 通信的新特性: 新的 HttpClient

    [源码下载] 重新想象 Windows 8.1 Store Apps (88) - 通信的新特性: 新的 HttpClient 作者:webabcd 介绍重新想象 Windows 8.1 Store ...

  4. 程序清单 8-8 exec函数实例,a.out是程序8-9产生的可执行程序

    /* ============================================================================ Name : test.c Author ...

  5. #有如下值集合[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 ...

  6. leetcode 88

    88. Merge Sorted Array Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as on ...

  7. BestCoder Round #88

    传送门:BestCoder Round #88 分析: A题统计字符串中连续字串全为q的个数,预处理以下或加个cnt就好了: 代码: #include <cstdio> #include ...

  8. iisapp 命令 弹出 iisschlp.wsc [88,25] 属性值无效 progid

    iisapp 命令 弹出 iisschlp.wsc [88,25] 属性值无效 progid 在执行iisapp.vbs时,可能会提示如下错误:Windows Script Component - f ...

  9. 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 ...

随机推荐

  1. 条款51:编写new以及delete的时候需要固守常规

    C++中delete一个指针之后,只是回收指针指向位置的空间,而指针本身的值不变.你需要手工将其赋值为NULL.注意的一点是delete NULL指针的时候不会有任何的事情发生   小结:     o ...

  2. hdoj-1036-Average is not Fast Enough!(水题,坑)

     题目链接:Average is not Fast Enough! #include <iostream> #include <cstring> #include <st ...

  3. Milking Time(DP)

    个人心得:一开始自己找状态,是这么理解的,只要前面一个满足就等于此时的值加上d(n-1),否则就是不挖此时的比较d(n-1)和 d(n-2)+cost,不过仔细一想忽略了很多问题,你无法确定n-2和此 ...

  4. 微信小程序 写音乐播放器 slider组件 将value设置为0 真机测试滑块不能回到起点

    最近在用微信小程序写一个音频播放页面,做时间进度的时候用到了slider插件,但是在自然播放完成,或者上/下切换的时候,将slider的value属性值设为0,开发工具上滑块会回到起点,有效.但是真机 ...

  5. 学习动态性能表(20)--v$waitstat

    学习动态性能表 第20篇--V$WAITSTAT  2007.6.15 本视图保持自实例启动所有的等待事件统计信息.常用于当你发现系统存在大量的"buffer busy waits" ...

  6. 基于SSL的WCF传输安全

    [实践]WCF传输安全1:前期准备之证书制作   [实践]WCF传输安全2:基于SSL的WCF匿名客户端   [实践]WCF传输安全3:基于SSL的WCF对客户端验证   [实践]WCF传输安全4:基 ...

  7. PADS Layout CAM 的中高级焊盘选项

    PADS Layout CAM 的中高级焊盘选项 PADS CAM Gerber 输出非常灵活. 以至于很多人跳坑. 以这个这选项,最好的方式就是不勾.

  8. 如何让 PADS Layout 识别到板框

    如何让 PADS Layout 识别到板框 在很久很久以前 PADS Laout 还是 PowerPCB 的时候,铺铜是不认识板框的. 当有铺铜时必须复制一份板框再设置为铺铜才可以. 但到了 PADS ...

  9. 《hadoop权威指南》关于hive的第一个小例子的演示

    本文是<hadoop权威指南>关于hive的小例子,通过这个例子可以很好地看出来hive是个什么东西. 前提是已经配置好hive的远程连接版本的环境,我是用了MYSQL数据库保存元数据. ...

  10. fastjson --JSONObject 和JSONArray 转换

    fastjson解析:resultValue=[    {        "total": 1,        "saleLists": [           ...