CodeTON Round 7 (Div. 1 + Div. 2, Rated, Prizes!)

发布时间 2023-11-27 14:48:47作者: yufan1102

2023 11 27

A. Jagged Swaps

题意是:给你一个数组进行无数次的操作

image

问你能不能单调

思路:通过观察发现进行操作大的一定会被放在后面,所以一定会单调,但是操作是从2开始的,所以下表1的地方一定要是1

using namespace std;
int a[20];
void solve(){
    int n;
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
	}
	if(a[1]==1){
		cout<<"YES\n";
	}else{
		cout<<"NO\n";
	}
}
int main(){
	ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
	int t=1;
	cin>>t;
	for(int i=1;i<=t;i++)solve();
	return 0;
} 

B. AB Flipping

题意是:给你一个字符串,你可以进行一次操作,如果

image

但是每个地方最多操作一次,问你最多操作多少次?

思路:通过观察发现,假使循环字符串发现一个"B",那么可以操作的次数就是前面A的数量,那么用尺取法,维护字符串即可

using namespace std;
void solve(){
	int n;
	string s;
	cin>>n>>s;
	s=" "+s;
	int ans=0;
	int j=-1;
	for(int i=1;i<=n-1;i++){
		if(s[i]=='A'&&s[i+1]=='B'){
			if(j==-1){
			  ans++;
			}else{
			  ans+=(i-j);	
			}
			s[i+1]='A';
			j=i;
			continue;
		}
		if(s[i]=='A'&&j==-1)j=i-1;
	}
	cout<<ans<<"\n";
}
int main(){
	ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
	int t=1;
	cin>>t;
	for(int i=1;i<=t;i++)solve();
	return 0;
}