CF926C题解

题目:传送门

思路:

存储当前数串的长度和上一数串的长度,每输入一个数就判断和前一个是否相等,若相等则当前数串长度加一,否则比较当前数串和上一数串长度是否相等(记得特判第一个数串的情况),若相等则数串长度重置为 \(1\),若不相等则直接输出 NO 并 return。循环结束后需判断最后一个数串,若与上一个数串长度仍然相等(记得特判只有一个数串的情况),就输出 YES。

代码:

#include <bits/stdc++.h>
  using namespace std;
int n,a,b,t,s,i;
int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);
	cin>>n;
	for (i=1;i<=n;i++)
	{
		cin>>a;
		if (a!=b && i!=1)//若当前数和上一个数不相等。 
		{
			if (t!=s && s!=0)//若当前数串长度和上一数串长度不相等,并特判第一个数串的情况。 
			{
				cout<<"NO\n";
				return 0;
			}
			s=t;
			t=1;
		}
		else t++;
		b=a;
	}
	if (t!=s && s!=0) cout<<"NO\n";//判断最后一个数串,并判断只有一个数串的情况。 
	else cout<<"YES\n";
	return 0;
}
posted @ 2022-04-22 10:24  Jason142  阅读(34)  评论(0编辑  收藏  举报