Codeforces Round 913 (Div. 3)
文章目录
A. Rook
模拟,字符串
已经给了你位置,只要按照每一行每一列的顺序输出即可
#include<bits/stdc++.h>
using namespace std;
#define ll long long
void slove(){
int t;
cin>>t;
while(t--){
string s;
cin>>s;
for(int i=1;i<=8;i++){
if('a'+i-1==s[0])continue;
cout<<(char)('a'+i-1)<<s[1]<<endl;
}
for(int i=8;i>=1;i--){
if(i==s[1]-'0')continue;
cout<<s[0]<<i<<endl;
}
}
}
int main(){
slove();
}
B. YetnotherrokenKeoard
思维,模拟
记录每一个B前面的大小写比较麻烦,所以直接倒过来记录。
当出现b/B,就将计数器++,当出现大小写,就将计数器–,并标记。
然后正序输出所有未标记的即可
#include<bits/stdc++.h>
using namespace std;
#define ll long long
bool cmp(int a,int b){
return a>b;
}
void slove(){
int t;
cin>>t;
while(t--){
string s;
cin>>s;
int bcnt=0;
int Bcnt=0;
int len=s.size();
vector<int> flag(len+1);
for(int i=s.size()-1;i>=0;i--){
if(s[i]=='b'){
bcnt++;
continue;
}
if(s[i]=='B'){
Bcnt++;
continue;
}
if(islower(s[i]) and bcnt>0){
bcnt--;
flag[i]=1;
}
if(isupper(s[i])and Bcnt>0){
Bcnt--;
flag[i]=1;
}
}
for(int i=0;i<len;i++){
if(s[i]=='B' or s[i]=='b' or flag[i]==1)continue;
cout<<s[i];
}
cout<<endl;
}
}
int main(){
slove();
}
C. Removal of Unattractive Pairs
思