这代码写得头快炸了
查看原帖
这代码写得头快炸了
947873
RedWen_shuo楼主2024/7/18 20:14
#include<bits/stdc++.h>
#define ll long long

using namespace std;
template<typename T>void re(T&x){
	x = 0; int sign = 1; char c;
	do{c = getchar(); if (c == '-') sign = -1;}while(!isdigit(c));
	do{x = x * 10 + c - '0'; c = getchar();}while(isdigit(c));
	x *= sign;
}

const int N = 3e5 + 100;

int n, ans = 0;
char c[N];
bitset<5> vis;

int main(){
	re(n);
	for (int i = 1; i <= n; i ++) cin >> c[i];
	vis[1] = vis[2] = vis[3] = 1;
	for (int i = 1; i <= n; i ++){	
		if (vis[1] == 1 && vis[2] == 1 && vis[3] == 1){
			if (c[i] == 'W'){ continue;}
			if (c[i] == 'B'){ ans ++, vis[3] = 0; continue;}
			if (c[i] == 'R'){ ans += 2, vis[2] = vis[3] = 0; continue;}
		}else if (vis[1] == 1 && vis[2] == 1 && vis[3] == 0){
			if (c[i] == 'W'){ ans ++, vis[3] = 1; continue;}
			if (c[i] == 'B'){ continue;}
			if (c[i] == 'R'){ ans ++, vis[2] = 0; continue;}
		}else if (vis[1] == 0 && vis[2] == 1 && vis[3] == 1){
			if (c[i] == 'W'){ continue;}
			if (c[i] == 'B'){ ans ++, vis[3] = 0; continue;}
			if (c[i] == 'R'){ ans += 3, vis[2] = vis[3] = 0, vis[1] = 1; continue;}
		}else if (vis[1] == 1 && vis[2] == 0 && vis[3] == 1){
			if (c[i] == 'W'){ continue;}
			if (c[i] == 'B'){ ans += 2, vis[3] = 0, vis[2] = 1; continue;}
			if (c[i] == 'R'){ ans ++, vis[3] = 0; continue;}
		}else if (vis[1] == 0 && vis[2] == 0 && vis[3] == 1){
			if (c[i] == 'W'){ continue;}
			if (c[i] == 'B'){ ans += 2, vis[3] = 0, vis[2] = 1; continue;}
			if (c[i] == 'R'){ ans += 2, vis[1] = 1, vis[3] = 0; continue;}
		}else if (vis[1] == 0 && vis[2] == 1 && vis[3] == 0){
			if (c[i] == 'W'){ ans ++, vis[3] = 1; continue;}
			if (c[i] == 'B'){ continue;}
			if (c[i] == 'R'){ ans += 2, vis[2] = 0, vis[3] = 1; continue;}
		}else if (vis[1] == 1 && vis[2] == 0 && vis[3] == 0){
			if (c[i] == 'W'){ ans ++, vis[3] = 1; continue;}
			if (c[i] == 'B'){ ans ++, vis[2] = 1; continue;}
			if (c[i] == 'R'){ continue;}
		}else if (vis[1] == 0 && vis[2] == 0 && vis[3] == 0){
			if (c[i] == 'W'){ ans ++, vis[3] = 1; continue;}
			if (c[i] == 'B'){ ans ++, vis[2] = 1; continue;}
			if (c[i] == 'R'){ ans ++, vis[1] = 1; continue;}
		}
	}
	
	printf("%d", ans);
	
	return 0;
}
2024/7/18 20:14
加载中...