首页 > 其他分享 >最长递增子段

最长递增子段

时间:2022-09-26 20:47:11浏览次数:54  
标签:子段 int max 递增 Ai num include 最长

★实验任务

YZF 有一个序列 A,由 n 个整数组成。

我们将子段 A 称为 Ai、Ai +1、Ai+ 2、…Aj(1<=i<=j=n)表示 A 的子段。

你的任务是找到 A 的最长的子段,这样就可以从子段最多改变一个数(可改变为任一个整数),使子段严格地增加。

输出找到的最长子段的长度即可。

★数据输入

输入第一行为一个正整数 n

第二行为 n 个数,第 i 个代表 ai。,0<=ai<=1000000000

对于 30%的数据,1<=n<=666;

对于 100%的数据,1<=n<=100086;

★数据输出

输出找到的最长子段的长度即可

 

#include<iostream>
#include<math.h>
#include<string>
using namespace std;
int main()
{
	int n;
	cin>>n;
	int i;
	int a[100086];
	int l[10086]={0};
	int num=0;
	cin>>a[1];l[num]++;
	for(i=2;i<=n;i++)
	{
		cin>>a[i];
		if(a[i]<=a[i-1])
		{
			num++;
		}
		l[num]++;//求每段字段长度
	}
	int sign=0;
	int max=0;
	for(i=0;i<=num;i++)
	{
		sign+=l[i];//在数组的位置
		if(a[sign+1]-a[sign-1]>=2)// 1 2 7 3 4
		{
			if(max<l[i]+l[i+1])
			{
				max=l[i]+l[i+1];
			}
		}
		
		else if(a[sign+2]-a[sign]>=2)// 1 2 7 6 7
		{
			if(max<l[i]+l[i+1])
			{
				max=l[i]+l[i+1];
			}
		}
		else
		{
			if(max<l[i]+1)
			{
				max=l[i]+1;//均长
			}
		}
	}
	cout<<max;
	return 0;
	
}

 

标签:子段,int,max,递增,Ai,num,include,最长
From: https://www.cnblogs.com/iceforever7/p/16732328.html

相关文章

  • 最长公共前缀
    描述给你一个大小为n 的字符串数组strs,其中包含n个字符串,编写一个函数来查找字符串数组中的最长公共前缀,返回这个公共前缀。 数据范围: 0\len\le50000≤n......
  • 无重复字符的最长子串
    目录题目描述解题思路解题代码题目描述题目地址:https://leetcode.cn/problems/longest-substring-without-repeating-characters/题目要求给定一个字符串s,请你找出......
  • 最长不下降子序列
    #include<bits/stdc++.h>usingnamespacestd;intdfs(int);intmax(int,int);intmaxn=0,n,a[10000],f[10000];intmain(){cin>>n;for(inti=1;i<=n;i......
  • 最长不下降子序列
    题目:设有由n(1≤n≤200))个不相同的整数组成的数列,记为:b(1)、b(2)、……、b(n)b(1)、b(2)、……、b(n)若存在i1<i2<i3<…<ie且有b(i1)<=b(i2)<=…<=b(ie)则称为长度为e......
  • 最长上升子序列(LIS)
    题目:LIS(LongestIncreasingSubsequence)为最长上升子序列:给定n个元素的数列,求最长的上升子序列长度(LIS)。一个数的序列ai,当a1<a2<…<aS的时候,我们称这个序列是......
  • 算法第二章3·7-4 最大子段和
    给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。当所给的整数均为负数时,定义子段和为0。要求算法的时间复杂......
  • 在递增的链表中删除min到max之间的所有元素
    在递增的链表中删除min到max之间的所有元素存在一个递增的链表,其中相邻两个结点的数据域的值要么相等,要么就是后面的大于前面的,对该表进行删除值属于(min,max)包括min和m......
  • LC1143 最长公共子序列
    intlongestCommonSubsequence(stringtext1,stringtext2){//dp[i][j]记录text1前i序列和text2前j序列的最长公共序列intdp[1005][1005];m......
  • leetcode 2414. 最长的字母序连续子字符串的长度
    leetcode2414.最长的字母序连续子字符串的长度题目描述字母序连续字符串是由字母表中连续字母组成的字符串。换句话说,字符串"abcdefghijklmnopqrstuvwxyz"的任意子......
  • 1624. 两个相同字符之间的最长子字符串
    1624.两个相同字符之间的最长子字符串给你一个字符串s,请你返回两个相同字符之间的最长子字符串的长度,计算长度时不含这两个字符。如果不存在这样的子字符串,返回-1......