[nowcoder]最长区间
链接:https://www.nowcoder.com/acm/contest/158/B
求最长连续严格递增序列
线段树模板题,码力弱的一匹调了半天。。
代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#define M 100010
#define ls node*2
#define rs node*2+1
using namespace std;
int n,m;
int a[M],ml[M<<],mr[M<<],L[M<<],R[M<<],val[M<<];
void update(int node,int l,int r)
{
int ans=;
if(R[ls]<L[rs]) ans=mr[ls]+ml[rs];
val[node]=max(max(val[ls],val[rs]),ans);
L[node]=L[ls]; R[node]=R[rs];
int mid=(l+r)/;
ml[node]=ml[ls]; mr[node]=mr[rs];
if(ml[ls]==mid-l+&&R[ls]<L[rs]) ml[node]=ml[ls]+ml[rs];
if(mr[rs]==r-mid&&R[ls]<L[rs]) mr[node]=mr[rs]+mr[ls];
}
void build(int node,int l,int r)
{
if(l==r)
{
L[node]=R[node]=a[l];
ml[node]=mr[node]=val[node]=;
return;
}
int mid=(l+r)/;
build(ls,l,mid);
build(rs,mid+,r);
update(node,l,r);
}
void change(int node,int l,int r,int k,int x)
{
if(l==r)
{
L[node]=R[node]=x;
return;
}
int mid=(l+r)/;
if(k<=mid) change(ls,l,mid,k,x);
else change(rs,mid+,r,k,x);
update(node,l,r);
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++) scanf("%d",&a[i]);
build(,,n);
printf("%d\n",val[]);
for(int i=;i<=m;i++)
{
int x,y; scanf("%d%d",&x,&y);
change(,,n,x,y);
printf("%d\n",val[]);
}
return ;
}
[nowcoder]最长区间的更多相关文章
- hdu 3530 区间和在一定范围内最长区间
http://acm.hust.edu.cn/vjudge/problem/11253 这题要找到区间和在[m,k]范围内的最长区间 用两个单调序列保存区间最大值和最小值.当最大值-最小值>k时 ...
- 牛客训练赛25-A-最长区间
https://www.nowcoder.com/acm/contest/158#question 这题问最长的严格连续递增序列的最长长度是多少? 最开始感觉这道题不可做,因为有1e5个点,还有1e5 ...
- Excel 如何做不定长区间汇总统计
第一步:创建数据-区间 辅助表(注意:首列值必须以升序排列,为后面vlookup模糊匹配做准备) 第二步:用vlookup模糊匹配生成一个新的“金额区间”字段 第三步:以“金额区间”字段为行透视汇总
- (luogu P3358)最长k可重区间集问题 [TPLY]
最长k可重区间集问题 题目链接 https://www.luogu.org/problemnew/show/3358 做法 所有点向下一个点连容量为k费用为0的边 l和r连容量为1费用为区间长度的边 ...
- 区间dp最长回文子序列问题
状态转移方程如下: 当i > j时,dp[i,j]= 0. 当i = j时,dp[i,j] = 1. 当i < j并且str[i] == str[j]时,dp[i][j] = dp[i+1 ...
- 【BZOJ-4653】区间 线段树 + 排序 + 离散化
4653: [Noi2016]区间 Time Limit: 60 Sec Memory Limit: 256 MBSubmit: 107 Solved: 70[Submit][Status][Di ...
- [POJ3667]Hotel(线段树,区间合并)
题目链接:http://poj.org/problem?id=3667 题意:有一个hotel有n间房子,现在有2种操作: 1 a,check in,表示入住.需要a间连续的房子.返回尽量靠左的房间编 ...
- poj-----(2528)Mayor's posters(线段树区间更新及区间统计+离散化)
Mayor's posters Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 43507 Accepted: 12693 ...
- 【NOIP模拟_54测试】【并查集】【二进制】【搜索】【区间序列类】
第一题 Mushroom的序列 大意: 给一个序列,求一段连续最长区间满足:最多改变一个数,使得区间是严格的上升子序列. 解: 直接扫描一遍,记一个最长上升子序列编号.然后从每一个编号为1 的点来判断 ...
随机推荐
- Jmeter_远程启动 I
Jmeter 是Java 应用,对于CPU和内存的消耗比较大,因此,当需要模拟数以千计的并发用户时,使用单台机器模拟所有的并发用户就有些力不从心,甚至会引起JAVA内存溢出错误. 其实,Jmeter的 ...
- iOS-如何导出P12文件
1.第一次用博客园,排版有点问题. 2.第一步点击进入Launchped 3.第二步点击钥匙串访问 4.第三步 找到登录下的Distribution 然后右键选择导出 5.第四步 选择下面的个人信息交 ...
- 在TextView中设置DrawableLeft不显示的问题
1.在XML中使用 android:drawableLeft="@drawable/icon" 2.代码中动态变化 Drawable drawable= getResources( ...
- Hadoop 2.0 NameNode HA和Federation实践【转】
Hadoop 2.0 NameNode HA和Federation实践 Posted on 2012/12/10 一.背景 天云趋势在2012年下半年开始为某大型国有银行的历史交易数据备份及查询提供基 ...
- java jdk 1.6 下载
http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-javase6-41940 ...
- angualar入门学习-- 自定义指令 指令编译执行过程
3个阶段: 一.加载阶段 加载angular.js的源码,找到ng-app确定应用边界范围. 二.编译阶段 compile 查找所有指令,保存在一个列表中 对所有指令按优先级(property属性值) ...
- 创建Json
1)生成 JSON: 方法 1.创建一个 map,通过构造方法将 map 转换成 json 对象 Map<String, Object> map = new HashMap<Stri ...
- 并发编程5 操作系统&进程
一.今日大纲 1.multiprocessing模块简单应用 2.for循环创建进程 3.进程传参方式和创建方式2 4.join方法 5.操作系统基础 二.今日内容 (1)操作系统简单介绍 多道技术: ...
- 14.wamp自定义网站根目录
1.首先打开Apache 中的配置文件httpd.conf crtl+f 搜索 documentroot ,在找到的目录中将目录修改自己的网站的目录,注意\ 与/ 2.在向下移动,找到<Di ...
- Making the Grade---poj3666(类似离散化+dp)
题目链接:http://poj.org/problem?id=3666 题意是给出一组数,每个数代表当前位置的地面高度,问把路径修成非递增或者非递减,需要花费的最小代价? ///用dp[i][j]表示 ...