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;
}