1 条题解

  • 0
    @ 2026-5-3 21:40:44

    注意,如果数组中有两个相交的连续非递减子序列,它们可以合并成一个。因此,你只需从左到右遍历数组。如果当前子序列可以用第 ii 个元素继续延伸,那么我们就将其加入;否则,我们就开始一个新的子序列。答案就是所有找到的子序列中的最大长度。

    #include<iostream>
    #include<math.h>
    #include<algorithm>
    #include<stdio.h>
    #include<map>
    #include<vector>
    #include<set>
    #include<iomanip>
    #define F first
    #define S second
    #define P system("PAUSE");
    #define H return 0;
    #define pb push_back
    using namespace std;
    const long long A=100000000000000LL,N=228228;
    
    long long a[N],k,o,i,j,n,m;
    
    int main(){
    	cin>>n;
    	for(i=0;i<n;i++)scanf("%d",&a[i]);
    	k=1;
    	for(i=1;i<n;i++)if(a[i]>=a[i-1])k++;else o=max(o,k),k=1;
    	o=max(o,k);
    	cout<<o;
    }
    
    • 1

    信息

    ID
    6773
    时间
    1000ms
    内存
    256MiB
    难度
    5
    标签
    递交数
    1
    已通过
    1
    上传者