[nowcoder]最长区间
链接:https://www.nowcoder.com/acm/contest/158/B
求最长连续严格递增序列
线段树模板题,码力弱的一匹调了半天。。
代码:
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #define M 100010 5 #define ls node*2 6 #define rs node*2+1 7 using namespace std; 8 int n,m; 9 int a[M],ml[M<<2],mr[M<<2],L[M<<2],R[M<<2],val[M<<2]; 10 void update(int node,int l,int r) 11 { 12 int ans=0; 13 if(R[ls]<L[rs]) ans=mr[ls]+ml[rs]; 14 val[node]=max(max(val[ls],val[rs]),ans); 15 L[node]=L[ls]; R[node]=R[rs]; 16 int mid=(l+r)/2; 17 ml[node]=ml[ls]; mr[node]=mr[rs]; 18 if(ml[ls]==mid-l+1&&R[ls]<L[rs]) ml[node]=ml[ls]+ml[rs]; 19 if(mr[rs]==r-mid&&R[ls]<L[rs]) mr[node]=mr[rs]+mr[ls]; 20 } 21 void build(int node,int l,int r) 22 { 23 if(l==r) 24 { 25 L[node]=R[node]=a[l]; 26 ml[node]=mr[node]=val[node]=1; 27 return; 28 } 29 int mid=(l+r)/2; 30 build(ls,l,mid); 31 build(rs,mid+1,r); 32 update(node,l,r); 33 } 34 void change(int node,int l,int r,int k,int x) 35 { 36 if(l==r) 37 { 38 L[node]=R[node]=x; 39 return; 40 } 41 int mid=(l+r)/2; 42 if(k<=mid) change(ls,l,mid,k,x); 43 else change(rs,mid+1,r,k,x); 44 update(node,l,r); 45 } 46 int main() 47 { 48 scanf("%d%d",&n,&m); 49 for(int i=1;i<=n;i++) scanf("%d",&a[i]); 50 build(1,1,n); 51 printf("%d\n",val[1]); 52 for(int i=1;i<=m;i++) 53 { 54 int x,y; scanf("%d%d",&x,&y); 55 change(1,1,n,x,y); 56 printf("%d\n",val[1]); 57 } 58 return 0; 59 }
转载于:https://www.cnblogs.com/Slrslr/p/9532899.html
[nowcoder]最长区间相关推荐
- 牛客练习赛25 B-最长区间
题目链接: 题目描述 给你一个长度为 n 的序列 a ,求最长的连续的严格上升区间的长度. 同时会进行 m 次修改,给定 x , y ,表示将 ax 修改为 y ,每次修改之后都要求输出答案. 输入描 ...
- 线段树区间合并--询问某段区间内最长连续上升子序列即最长上升子串
链接:https://www.nowcoder.com/acm/contest/158/B 来源:牛客网 最长区间 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他 ...
- 【nowcoder 224882】牛牛和数组操作(贪心)(剪枝)(区间DP)
牛牛和数组操作 题目链接:nowcoder 224882 题目大意 给你一个没有 0 的数组,每次你可以选一个数,然后把它变成 0,费用是它两边为端点最长的没有 0 的最长区间的最大值. 然后要你在最 ...
- 线段树维护(最大区间和,最大子段和,最长连续上升子序列)
本文主要介绍用线段树来维护(最大区间和,最大子段和,最长连续上升子序列)的问题. HDU 1540 Tunnel Warfare(最长连续区间+单点修改) 洛谷 P2894 [USACO08FEB]酒 ...
- Python每日一练:最长递增区间狄杰斯特拉(80分)K树(0分)
文章目录 前言 一.最长递增区间 二.狄杰斯特拉(80) 三.K树(0) 总结 前言 很显然,Python的受众远远大于C++,其实笔者本人对Python的理解也是远强于C++的,C++纯粹是为了假装 ...
- 【BZOJ 1202】 [HNOI2005]狡猾的商人(枚举区间也可行)
题链:http://www.lydsy.com/JudgeOnline/problem.php?id=1202 其实也可以不使用加权并查集,通过画图可以发现,一个长区间和其包含的区间能够算出一个新区间 ...
- 动态规划——区间dp
在利用动态规划解决的一些实际问题当中,一类是基于区间上进行的,总的来说,这种区间dp是属于线性dp的一种.但是我们为了更好的分类,这里仍将其单独拿出进行分析讨论. 让我们结合一个题目开始对区间dp的探 ...
- BZOJ4653 洛谷1712 UOJ222:[NOI2016]区间——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=4653 https://www.luogu.org/problemnew/show/P1712 ht ...
- 线段树练习——区间合并
这类题目会询问区间中满足条件的连续最长区间,所以PushUp的时候需要对左右儿子的区间进行合并(这里最难理解) hdu 3308 http://acm.hdu.edu.cn/showproblem.p ...
- [UOJ #222][NOI2016]区间(线段树)
Description 在数轴上有 n个闭区间 [l1,r1],[l2,r2],...,[ln,rn].现在要从中选出 m 个区间,使得这 m个区间共同包含至少一个位置.换句话说,就是使得存在一个 x ...
最新文章
- 配置.net 3.0开发环境
- TVM: Deep Learning模型的优化编译器(强烈推荐, 附踩坑记录)
- 半导体理论(第2部分)半导体掺杂
- Django Bakend--后台管理插件开发-01
- linux安装pl sql,Linux上安装配置InstantClient及64位系统Pl/SQL配置
- 六年级计算机应用计划,2017六年级信息技术下册教学计划
- Java中static作用及用法详解
- CentOS hadoop 分布式集群的搭建
- matlab简单分析模拟滤波器 IIR
- 【莫队】【P3901】 数列找不同
- 老司机 iOS 周报 #42 | 2018-11-05
- c语言的dll反编译,可怕的DLL反编译工具(DLL to C)
- 记录一次pl2303串口驱动解决故障
- 组件上传之AspUpload使用方法
- 德玛西亚皇子背景故事
- Jenkins自动化部署学习笔记(二、在Windows系统上使用Jenkins.war直接运行 )
- C语言结构体typedef struct详解
- [ASP.NET网站开发] web程序设计,期末作业,问卷填写与学生选课管理系统(超简单,容易懂!课程考核必过)(使用内置数据库)
- eb8000软件怎样上传_EB8000程序上传与下载
- bootstrap的使用方法及其基本模板
热门文章
- 你没听过的IT技术解读,能秒懂的都是老司机...
- 不会写漂亮代码不是优秀的程序员,没有钢铁侠之躯不是合格的程序员
- Python必不可少的小技巧,一行代码减少一半内存占用!
- Android欢迎页短暂白屏
- 【ubuntu】出现device not managed连接不上网络
- C语言结构体初始化(转载)
- setCompoundDrawables和setCompoundDrawablesWithIntrinsicBounds区别
- memcached罢工引发的血案-博客园评论超时问题处理过程
- 线段树模板--单点更新+区间求和
- Python学习之路:socket网络编程