Codeforces Round #FF (Div. 2):C. DZY Loves Sequences[通俗易懂]

Codeforces Round #FF (Div. 2):C. DZY Loves Sequences

大家好,又见面了,我是全栈君。

C. DZY Loves Sequences
time limit per test

1 second

memory limit per test

256 megabytes

input

standard input

output

standard output

DZY has a sequence a, consisting of n integers.

We’ll call a sequence ai, ai + 1, …, aj (1 ≤ i ≤ j ≤ n) a subsegment of the sequence a. The value (j - i + 1) denotes the length of the subsegment.

Your task is to find the longest subsegment of a, such that it is possible to change at most one number (change one number to any integer you want) from the subsegment to make the subsegment strictly increasing.

You only need to output the length of the subsegment you find.

Input

The first line contains integer n (1 ≤ n ≤ 105). The next line contains n integers a1, a2, …, an (1 ≤ ai ≤ 109).

Output

In a single line print the answer to the problem — the maximum length of the required subsegment.

Sample test(s)
Input
6
7 2 3 1 5 6

Output
5

Note

You can choose subsegment a2, a3, a4, a5, a6 and change its 3rd element (that is a4) to 4.

题意就是, 你能够改变字符串中的一个字符。 就出其最长的连续字串

如案列, 7 2 3 1 5 6 —————7 2 3  4 5 6

输出即为5.


#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<vector>
#include<queue>
#include<sstream>
#include<cmath>

using namespace std;

#define f1(i, n) for(int i=0; i<n; i++)
#define f2(i, m) for(int i=1; i<=m; i++)
#define f3(i, n) for(int i=n; i>=1; i--)
#define f4(i, n) for(int i=1; i<=n; i++)
#define f5(i, n) for(int i=2; i<=n; i++)
#define M 1005

const int INF = 0x3f3f3f3f;
int n, a[100005], b[100005];

int main()
{
    cin>>n;
    f4(i, n)
    cin>>a[i];
    b[1]=1;
    f5(i, n)
    {
        b[i]=1;
        if (a[i]>a[i-1])
            b[i]=b[i-1]+1;
    }
    int ans=-INF;
    f3(i, n)
    {
        if (b[i]==n)
            ans=max(b[i], ans);
        else
            ans=max(ans, b[i]+1);
        if (a[i-b[i]+1]-1>a[i-b[i]-1])
            ans=max(ans,b[i]+b[i-b[i]]);
        if (a[i-b[i]+2]-1>a[i-b[i]])
            ans=max(ans,b[i]+b[i-b[i]]);
    }
    cout<<ans<<endl;
    return 0;
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116123.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 数据库设计中的概念,逻辑,物理结构设计辨析法_什么叫做逻辑

    数据库设计中的概念,逻辑,物理结构设计辨析法_什么叫做逻辑对于初学者来说,数据库设计中的概念、逻辑、物理结构设计三者更像是孪生兄弟,分不清他们各自是谁,主要有什么作用。偶然间查阅文献,看到一篇期刊中表述比较规范,特用相对容易理解的语言辨析三者关系,并借用期刊中的规范示意图仅供学习交流(期刊出处见参考文献,如有侵权,请联系删除)。数据库设计应该是概念结构设计(E-R图),逻辑结构设计(关系模式),物理结构设计(数据表,设计字段)三者共同组成的。概念结构设计依据对于现实世界的关系的调研、了解、分析而后得到的实体对象有哪些,对象有哪些特征,它们之间的关系是1对1

    2022年8月31日
    5
  • bgr2gray_tarjan算法

    bgr2gray_tarjan算法概述项目中用到yuvNV12转BGR24的算法,总结了几种常用算法代码如下。直接转换//NV12转BGRvoidNV12_T_BGR(unsignedintwidth,unsignedintheight,unsignedchar*yuyv,unsignedchar*bgr){constintnv_start=wi…

    2022年9月16日
    0
  • 深度学习入门指南

    深度学习入门指南

    2022年3月7日
    43
  • ubuntu新手教程_ubuntu系统使用教程

    ubuntu新手教程_ubuntu系统使用教程Ubuntu可以说是Linux系统的一面旗帜,相比于大多数发行版,美观易用,具有强大的社区支持,因而也成为了新手入门Linux系统的一个不错选择(再深入点的CentOS之类的就另说了)。笔者在尝试Ubuntu系统的时候遇到了若干问题花了一些时间才解决,本文主要讲解这些Ubuntu入门可能会遇到的问题,有深有浅,欢迎批评指正。

    2022年4月19日
    859
  • 前端技术栈总结_前端开发技术栈

    前端技术栈总结_前端开发技术栈vuereact

    2022年10月25日
    0
  • 邮件服务器配置「建议收藏」

    邮件服务器postfix仅提供smtp服务,不提供pop3和imap服务,主要是用发送和接收邮件的(接收到的邮件后,一般转交dovecot处理,dovecot负责将postfix转发过来的邮件保存到服务器硬盘上)dovecot仅提供pop3和imap服务,不提供smtp服务(Foxmail之类的邮箱客户端,都是通过pop3和imap来收发邮件的。…

    2022年4月14日
    188

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号