题解:CF2065B Skibidus and Ohio

题解:CF2065B Skibidus and Ohio

题目传送门

题目大意

对于一个字符串 \(S\),进行如下操作:

  • 选定一个 \(i\),满足 \(1 \le i \le |S|-1\),如果 \(S_i=S_{i+1}\),那么删除 \(S_{i+1}\),将 \(S_i\) 改为任意小写字母。
  • \(|S|\) 尽可能小。

题目思路

为了使 \(|S|\) 尽可能小,我们要使 \(S_i=S_{i+1}\) 出现次数更多。
对于一个字符串 $ S_1,S_2,S_3,S_4,\cdots,S_n $,显然如下操作:

  • 如果有两项相等那么经过操作后长度为 \(1\)
  • 如果相邻两项互不相等那么无法进行操作,结果为 \(|S|\)

代码实现

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll t,len; string s;
int main() {
    cin>>t;
    while(t--){
    	cin>>s;
    	len=s.size();
    	bool flag=0;
    	for(int i=0;i<len-1;i++){
			if(s[i]==s[i+1]){
				flag=1; 
				break;
			}
		}
		(flag)?cout<<1<<'\n':cout<<len<<'\n';
	}
	return 0;
}

posted @ 2025-02-11 17:00  M1_Byte  阅读(20)  评论(0编辑  收藏  举报