萌新求助贪心
查看原帖
萌新求助贪心
929863
Stars_never_set楼主2023/8/10 15:46

第6个点挂了((((

#include<bits/stdc++.h>
using namespace std;
const int N=1e6+6;
const int IM=2147483647;
const long long LLM=9223372036854775807;

inline int read()
{
	int x=0,y=1;char c=getchar();
	while(c<'0'||c>'9'){if(c=='-') y=-y;c=getchar();}
	while(c>='0'&&c<='9'){x=x*10+(c^'0');c=getchar();}
	return x*y;
}

int n,a[N],nex[N],vis[N];
int x,y;

signed main()
{
	n=read();
	for(int i=1;i<=n;i++) a[i]=read();
	for(int i=n;i;i--)
	{
		nex[i]=(!vis[a[i]])?n+1:vis[a[i]];
		vis[a[i]]=i;
	}
	if(n==1) return puts("1"),0;
	x=a[1],y=a[2];
	int idx=1,idy=2;
	int ans=2;
	for(int i=3;i<=n;i++)
	{
		if(a[i]==x) ans+=(a[i]!=y),y=a[i],idy=i;
		else if(a[i]==y) ans++,x=a[i],idx=i;
		else
		{
			ans++;
			nex[idx]>nex[idy]?y=a[i],idy=a[i]:x=a[i],idx=a[i];
		}
	}
	printf("%d\n",ans);
	return 0;
}
2023/8/10 15:46
加载中...