1007: 严格递增连续子段 [模拟]

时间限制: 1 Sec 内存限制: 128 MB

提交: 244 解决: 18 统计

题目描述

给定一个有NN个正整数组成的序列,你最多可以改变其中一个元素,可以修改为任意的整数。问可以得到的严格递增连续子段的最大长度。

输入

第一行输入一个整数TT,代表有TT组测试数据。

每组数据占两行,第一行输入一个整数NN,代表元素个数。

下面一行有NN个正整数ai(ai<231)ai(ai<231)。

注:1<=T<=100,1<=N<=1000001<=T<=100,1<=N<=100000。

输出

对每组测试数据输出一个整数代表可以得到的严格递增连续子段的最大长度。

样例输入

2
4
1 2 3 4
4
1 2 2 4

样例输出

4
4

提示

第一组数据已经是严格递增连续子段了,不需要修改。

第二组数据可以将第三个元素修改为3,这样可以得到长度为4的严格递增连续子段。

一开始的思路是dp,但是看了学长们的题解后竟然是贪心,看了好久代码才理解

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6+10;
int a[maxn];
struct wzy{
int start,starti,end,endi,len;
}p[maxn];
int main()
{
int t,n,i;
cin>>t;
while(t--)
{
int k=0,res=1;
int max_len=0;
memset(a,0,sizeof(a));
cin>>n;
cin>>a[1];
p[k].start=a[1];
p[k].starti=1;
for(i=2;i<=n;i++)
{
cin>>a[i];
if(a[i]<=a[i-1])
{
p[k].end=a[i-1];
p[k].endi=i-1;
p[k].len=res;
k++;
p[k].start=a[i];
p[k].starti=i;
max_len=max(max_len,res);
res=1;
}
else res++;
}
p[k].len=res;
p[k].end=a[n];
p[k].endi=n;
k++;
max_len=max(max_len,res);
if(k>1) max_len++;
for(i=0;i<k-1;i++)
if(p[i].end+1<a[p[i+1].starti+1]||p[i].end-1>=1&&a[p[i].endi-1]+1<p[i+1].start)
max_len=max(max_len,p[i].len+p[i+1].len);
cout<<max_len<<endl;
}
return 0;
}

HPU 1007: 严格递增连续子段(贪心)的更多相关文章

  1. TZOJ 4024 游戏人生之梦幻西游(连续子段和绝对值最小)

    塔神酷爱玩梦幻西游这款游戏,这款游戏以著名的章回小说<西游记>故事为背景,透过Q版的人物,营造出浪漫的网络游戏风格.塔神以追求天下无敌为目标,从一个默默无闻的菜鸟,打拼到了登峰造极的大师, ...

  2. HDOJ-1003 Max Sum(最大连续子段 动态规划)

    http://acm.hdu.edu.cn/showproblem.php?pid=1003 给出一个包含n个数字的序列{a1,a2,..,ai,..,an},-1000<=ai<=100 ...

  3. HDU 1003:Max Sum(DP,连续子段和)

    Max Sum Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Su ...

  4. HDU 1003 最大连续子段和

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1003 Max Sum Time Limit: 2000/1000 MS (Java/Others)M ...

  5. 【bzoj5089】最大连续子段和 分块+单调栈维护凸包

    题目描述 给出一个长度为 n 的序列,要求支持如下两种操作: A  l  r  x :将 [l,r] 区间内的所有数加上 x : Q  l  r : 询问 [l,r] 区间的最大连续子段和. 其中,一 ...

  6. [题解](线段树最大连续子段和)POJ_3667_Hotel

    题意:1.求一个最靠左的长x的区间全部为0,并修改为1,输出这个区间的左端点 2.修改一个区间为0 实际上是维护最大连续子段和,原来也写过 大概需要维护一个左/右最大子段和,当前这段最大子段长,再维护 ...

  7. JDOJ 2982: 最大连续子段和问题

    洛谷 P1115 最大子段和 洛谷传送门 JDOJ 2982: 最大连续子段和问题 JDOJ传送门 题目描述 给出一段序列,选出其中连续且非空的一段使得这段和最大. 输入格式 第一行是一个正整数NN, ...

  8. maximum-subarray 序列最大连续和 贪心

    Find the contiguous subarray within an array (containing at least one number) which has the largest ...

  9. 51nod 1275 连续子段的差异

    题目看这里 若[i,j]符合要求,那么[i,j]内的任何连续的子段都是符合要求的.我们可以枚举i,找到能合格的最远的j,然后ans+=(j-i+1). 那么问题就转换成了:在固定i的情况下,如何判断j ...

随机推荐

  1. Android Fragment与Activity通讯详解

    与activity通讯 尽管fragment的实现是独立于activity的,可以被用于多个activity,但是每个activity所包含的是同一个fragment的不同的实例. Fragment可 ...

  2. centos7: iptables保存(配置完nginx的web规则后)

    centos7: iptables保存(配置完nginx的web规则后) 以本地虚拟机为例: 添加规则:入站规则 iptables -I INPUT -p tcp --dport 80 -j ACCE ...

  3. php 8小时时间差的解决方法小结

    原来从php5.1.0开始,php.ini里加入了date.timezone这个选项,默认情况下是关闭的 也就是显示的时间(无论用什么php命令)都是格林威治标准时间 和我们的时间(北京时间)差了正好 ...

  4. 12月10日 render( locals:{...}) 传入本地变量。

    Jdstor第一部分后台设计,4-4上传图片. 3.4 Using Partials--3.4.4 Passing Local Variables You can also pass local va ...

  5. 14西安区域赛C - The Problem Needs 3D Arrays

    最大密度子图裸题,详情请见胡博涛论文: https://wenku.baidu.com/view/986baf00b52acfc789ebc9a9.html 不加当前弧优化t到死= = //#prag ...

  6. How to create own operator with python in mxnet?

    继承CustomOp 定义操作符,重写前向后向方法,此时可以通过_init__ 方法传递需要用到的参数 class LossLayer(mxnet.operator.CustomOp): def __ ...

  7. spring boot 基础篇 -- 自带图片服务器

    我们平时在日常项目中经常会遇到图片的上传和访问的情景,平时我们可能习惯于把图片传到resource或者项项目中的某个位置,这样会有一个缺点,当我们重新项目打包时,这些图片会丢失.为了解决这一缺点,我们 ...

  8. 根据服务端生成的WSDL文件创建客户端支持代码的三种方式

    第一种:使用wsimport是JDK自带的工具,来生成 生成java客户端代码常使用的命令参数说明: 参数 说明 -p 定义客户端生成类的包名称 -s 指定客户端执行类的源文件存放目录 -d 指定客户 ...

  9. OC MRC之 @property参数(代码分析)

    第一部分 // // main.m // 04-@property参数 // // Created by apple on 13-8-9. // Copyright (c) 2013年 itcast. ...

  10. Android开发——1轻松战胜开发环境

    写在前头的话:鄙人乃2016年本科毕业的程序yuan一枚,大学阶段从未学过安卓,java也是一知半解,回想这一年半的开发生涯真的是相当悲壮.你要是问我喜欢开发吗,当然确定一定以及肯定地告诉你不喜欢啊! ...