5个点RE求助
查看原帖
5个点RE求助
1125784
shuidianfei楼主2024/8/4 19:29

https://www.luogu.com.cn/record/170574094 代码如下

#include<bits/stdc++.h>
using namespace std;
int n,t;
char in[1000010];
vector<int>l;
int main(){
	cin>>t;
	while(t--){
		l.clear();
		scanf("%d%s",&n,in+1);
		l.push_back(1);
		for(int i=2;i<=n;i++){
			if(l[l.size()-1]==1){//如果只有一位
				if(in[i]==in[i-1]){//如果一样
					if(i==n){
						l[l.size()-2]++;//前一个和前面拼,这一个自己拼
					}
					else{
						i++;//向后移两位
						l.push_back(2);
					}
				}
				else{
					l.push_back(1);
				}
			}
			else{//有两位
				if(i==n-1){//最后两位
					if(in[i]==in[i+1]){//如果最后两位相同
						if(in[i-2]==in[i] && in[i-1]==in[i+1]){//如果出现最后两个相同情况
							l[l.size()-1]=3;
							l.push_back(1);
						}
						else{
							l.push_back(2);
						}
					}
					else{
						l.push_back(1);
						l.push_back(1);
					}
					break;
				}
				else{
					l.push_back(1);
				}
			}
		}
		//for(int i=0;i<l.size();i++){
		//	printf("%2d%2d\n",i,l[i]);
		//}
		printf("%d\n",l.size());
	}
}
2024/8/4 19:29
加载中...