CF1546B题解
看了题面,一道简单的假交互题
读好题目很重要
AquaMoon 有 个长度为 的字符串,其中 是奇数。 然后她选取 个字符串,将它们复制一遍。 在 选取出的字符串中,AquaMoon 将其两两配对。对于每对字符串,AquaMoon 选取某些对应的位置,将位置上的字符调换。例如:配对的字符串是 abcdef 和 xyzklm,AquaMoon 选取的位置是 2、3、6,则调换完的两个字符串就是 ayzdem 和 xbcklf。 调换完后,所有字符串的顺序被打乱。现给出 以及打乱完后的字符串,请输出一开始没被选中的字符串。
简单一句话
把前 个字符每个位置上字母出现的次数分别保存下来,再把后 个字符串每个位置上的字母出现次数减去,最后 都剩下了一个字母,即答案。
源码时间:
#include<bits/stdc++.h>
using namespace std;
int a[30][100010];
int main(){
int t;
cin>>t;
while(t--){
int n,m;
cin>>n>>m;
for(int i=0;i<m;i++){
for(int j=0;j<=26;j++) a[j][i]=0;//清空
}
for(int i=1;i<=n;i++){
string s;
cin>>s;//输入
for(int j=0;j<s.size();j++){
a[s[j]-'a'][j]++;
}
}
for(int i=1;i<=n-1;i++){
string s;
cin>>s;//再次输入
for(int j=0;j<s.size();j++){
a[s[j]-'a'][j]--;
}
}
for(int i=0;i<m;i++){
for(char j='a';j<='z';j++){//字符循环
if(a[j-'a'][i]){//如果标记过了
cout<<j;//输出当前字符
break;//退出,进行下一次循环
}
}
}
cout<<endl;//记得换行!!!
}
return 0;//完结撒花!!
}
本人(KK_SpongeBob)蒟蒻,写不出好文章,但转载请注明原文链接:https://www.cnblogs.com/OIer-QAQ/p/18575291

浙公网安备 33010602011771号