CF1546B题解

看了题面,一道简单的交互题

题目传送门另一个传送门

读好题目很重要

AquaMoon 有 nn 个长度为 mm 的字符串,其中 nn奇数。 然后她选取 n1n-1 个字符串,将它们复制一遍。 在 选取出的字符串中,AquaMoon 将其两两配对。对于每对字符串,AquaMoon 选取某些对应的位置,将位置上的字符调换。例如:配对的字符串是 abcdef 和 xyzklm,AquaMoon 选取的位置是 2、3、6,则调换完的两个字符串就是 ayzdem 和 xbcklf。 调换完后,所有字符串的顺序被打乱。现给出 n,mn,m 以及打乱完后的字符串,请输出一开始没被选中的字符串。

简单一句话

把前 nn 个字符每个位置上字母出现的次数分别保存下来,再把后 n1n-1 个字符串每个位置上的字母出现次数减去,最后 1m1\sim m 都剩下了一个字母,即答案。

源码时间:

#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;//完结撒花!! 
}
posted @   KK_SpongeBob  阅读(3)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 百万级群聊的设计实践
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
点击右上角即可分享
微信分享提示