90pts求助
  • 板块P9147 签到题
  • 楼主sLMxf
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/3/14 19:08
  • 上次更新2023/10/23 21:33:58
查看原帖
90pts求助
752953
sLMxf楼主2023/3/14 19:08
#include<bits/stdc++.h>
using namespace std;
struct node{
	int ans;
	int end;
}ans[1000001];
int a[1000001];
int main()
{
	int n,maxx=-1;
	cin>>n;
	a[0]=INT_MAX;
	a[n+1]=INT_MIN;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
		ans[i].end=i;
		if(a[i]>a[i-1]) ans[i].ans=ans[i-1].ans+1;
		else ans[i].ans=1;
		maxx=max(ans[i].ans,maxx);
	}
	for(int i=n;i>=1;i--)
	{
		if(ans[i+1].ans>ans[i].ans&&a[i+1]>a[i]) ans[i]=ans[i+1];
	}
	for(int i=1;i<=n;i++)
	{
		if(a[i]<a[i+2]-1&&ans[i].end!=ans[i+2].end)
			maxx=max(ans[i].ans+ans[i+2].ans
			+int(ans[i+1].end!=ans[i+2].end&&ans[i].end!=ans[i+1].end),maxx);
		if(i!=1)
			if(a[i]<a[i-1]&&ans[i].end!=ans[i-1].end) maxx=max(maxx,ans[i].ans+1);
		if(i!=n)
			if(a[i]>a[i+1]&&ans[i].end!=ans[i+1].end) maxx=max(maxx,max(ans[i+1].ans,ans[i].ans)+1);
	}
	int sum=1;
	for(int i=2;i<=n;i++)
	{
		maxx=max(sum,maxx);
		if(a[i]>a[i-1]) sum++;
		else sum=1;
	}
	maxx=max(sum,maxx);
	cout<<maxx;
	return 0;
}

测试后是这样,可我看了 nn 遍都没发现错误,各位大佬错哪了?

2023/3/14 19:08
加载中...