社区讨论

零蛋求条

P14258好感(favor)参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@mhj0y2a2
此快照首次捕获于
2025/11/03 18:55
4 个月前
此快照最后确认于
2025/11/03 18:55
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
int T;
void spin(string &s,int n){
	string s1=s;
//	n++;
    for(int i=0;i<n;i++){
        s[i]=s1[(i+n+1)%n];
//        cout<<s<<endl;
    }
}
int main(){
    cin>>T;
    while(T--){
        int n,ans=0,ans1=0;
        string s,s1;
        cin>>n>>s;
        s1=s;
        for(int i=0;i<n;){
			if(s[i]=='0'){
				s[i]='1';
				spin(s,i);
				ans+=i+1;
			}
			else{
				int j=n-1;
				while(j>=0&&s[j]!='0'){
					j--;
				}
				if(j<0){
					j=n-1;
					i++;
					continue;
				}
				s[j]='1';
//				cout<<j<<endl;
				spin(s,j);
				ans+=j+1;
				j=n-1;
			}
			i++;
//			cout<<s<<endl;
		}
//		cout<<endl;
		s=s1;
		for(int i=0;i<n;){
					if(s[i]=='1'){
						s[i]='0';
						spin(s,i);
						ans1+=i+1;
					}
					else{
						int j=n-1;
						while(j>=0&&s[j]!='1'){
							j--;
						}
						s[j]='0';
						if(j<0){
											j=n-1;
											i++;
											continue;
										}
//						cout<<j<<endl;
						spin(s,j);
						ans1+=j+1;
						j=n-1;
					}
					i++;
//					cout<<s<<endl;
				}
		cout<<min(ans,ans1)<<endl;
		
    }
}

回复

0 条回复,欢迎继续交流。

正在加载回复...