一つの要素を削除します

ここに画像を挿入説明
ここに画像を挿入説明

質問の意味:後のサブシーケンスの上昇の長さを削除してください。

アイデア:増分の数がi番目のインクリメントの次の番号の前に記録されました、

最後に、全てのiを通じて、最大値の2つだけの状況理由は次のとおりです。

番号は1、i番目のインクリメントされ

2.ときにインクリメントの数は[I-1] <ARR [I + 1]ない増分先行+(i + 1)の後ろのi番目(I-1)個ARR。

#include <bits/stdc++.h>
#define SIS std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
#define ll long long
#define INF 0x3f3f3f3f
#define mod 998244353
using namespace std;
const int N=2e5+5;
int gcd(int a,int b)
{
	return b==0?a:gcd(b,a%b);
}
int dp[2][N];
int a[N];
int main()
{
    SIS;
   int n;
   cin>>n;
   for(int i=1;i<=n;i++)
   {
       cin>>a[i];
       if(a[i]>a[i-1])dp[0][i]=dp[0][i-1]+1;
       else dp[0][i]=1;
   }
   for(int i=n;i>=1;i--)
   {
       if(a[i+1]>a[i])dp[1][i]=dp[1][i+1]+1;
       else dp[1][i]=1;
   }
   int ans=0;
   for(int i=1;i<=n;i++)
   {
      ans=max(ans,dp[0][i]);
      if(a[i-1]<a[i+1])
        ans=max(ans,dp[0][i-1]+dp[1][i+1]);
   }
   cout<<ans<<endl;


   return 0;
}

公開された73元の記事 ウォンの賞賛4 ビュー2217

おすすめ

転載: blog.csdn.net/qq_43619680/article/details/103995966