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

文章讲述了两道编程竞赛题目,A题涉及JaggedSwaps,检查数组中最小值是否在第一个位置,B题是关于ABFlipping,计算字符串中A和B字符之间的交换次数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

A.如果最小值不在第一个,那最小值都移动不了,肯定无法排序.

a[1]=1即可.1-n排列.

// Problem: A. Jagged Swaps
// Contest: Codeforces - CodeTON Round 7 (Div. 1 + Div. 2, Rated, Prizes!)
// URL: https://codeforces.com/contest/1896/problem/A
// Memory Limit: 256 MB
// Time Limit: 1000 ms
// 
// Powered by CP Editor (https://cpeditor.org)

#include <iostream>
#include <cstring>
#include <iomanip>
#include <ctime>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <vector>
#include <stack>
#include <map>
#include <set>
#include <bitset>
#include <queue>
#define eps 1e-5
#define INF 1e9
using namespace std;
typedef long long ll;
const int N = 2e6 + 9;
int a[N];
int qs[N];
void solve() {
	int n;
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];  
	}
	int mi=INF;
	for(int i=1;i<=n;i++){
		mi=min(mi,a[i]);
	}
	if(mi==a[1]){
		cout<<"YES"<<'\n';
	}else{
		cout<<"NO"<<'\n';
	}
}

int main() {
	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
	int q;
	cin >> q;
	while (q--) {
		solve();
	}

	return 0;
}

#############################################################################B.手动模拟,可以发现只要找到第一个A和最后一个B就可以计算出交换次数,第一个A可以+条件得到,B一直更新就是最后一个B,如果没A或者没B就输出0,ans=max(Bindex-Aindex,0).

// Problem: B. AB Flipping
// Contest: Codeforces - CodeTON Round 7 (Div. 1 + Div. 2, Rated, Prizes!)
// URL: https://codeforces.com/contest/1896/problem/B
// Memory Limit: 256 MB
// Time Limit: 1000 ms
// 
// Powered by CP Editor (https://cpeditor.org)

#include <iostream>
#include <cstring>
#include <iomanip>
#include <ctime>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <vector>
#include <stack>
#include <map>
#include <set>
#include <bitset>
#include <queue>
#define eps 1e-5
#define INF 1e9
using namespace std;
typedef long long ll;
const int N = 2e6 + 9;
int a[N];
void solve() {
	int n;
	cin>>n;
	string s;
	cin>>s;
	int ans=0;
	int x=0;
	int y=0;
	bool flag=true;
	s=" "+s;
	for(int i=1;i<=n;i++){
		if(s[i]=='A' && flag){
			x=i;
			flag=false;
		}else if(s[i]=='B'){
			y=i;
		}
	}
	if(!x || !y){
		cout<<0<<'\n';
		return;
	}
	ans=max(y-x,0);
	cout<<ans<<'\n';


}

int main() {
	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
	int q;
	cin >> q;
	while (q--) {
		solve();
	}

	return 0;
}

C.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值