2023 11 27
A. Jagged Swaps
题意是:给你一个数组进行无数次的操作
问你能不能单调
思路:通过观察发现进行操作大的一定会被放在后面,所以一定会单调,但是操作是从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
题意是:给你一个字符串,你可以进行一次操作,如果
但是每个地方最多操作一次,问你最多操作多少次?
思路:通过观察发现,假使循环字符串发现一个"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;
}