# 官方题解|欢乐赛47题解 T5
2025-05-14 10:16:26
发布于:浙江
46阅读
0回复
0点赞
T5
题意分析
本题题意稍微复杂一点: 具体的意思是,你可以魄袭敌人的手牌,下 张不同花色的牌,根据敌人和自己的手牌数弃置数目的不同从而达到某种效果,题目问的是指定的 个效果是否能达到,如果达到了输出 ,达不到输出 ,简单分类讨论即可。
代码
#include <bits/stdc++.h>
using namespace std;
void solve(){
int n, m;
string s1, s2;
cin >> n >> m >> s1 >> s2;
bool a1 = 0, b1 = 0, c1 = 0, d1 = 0, a2 = 0, b2 = 0, c2 = 0, d2 = 0;
for(auto it : s1){
if(it == 'a') a1 = 1;
if(it == 'b') b1 = 1;
if(it == 'c') c1 = 1;
if(it == 'd') d1 = 1;
}
for(auto it : s2){
if(it == 'a') a2 = 1;
if(it == 'b') b2 = 1;
if(it == 'c') c2 = 1;
if(it == 'd') d2 = 1;
}
int ans[10] = {0};
if(a2 && b2 && c2 && d2) ans[1] = 1;
if((a2 && b2 && c2 && d1) || (a2 && b2 && d2 && c1) || (a2 && c2 && d2 && b1) || (b2 && c2 && d2 && a1)) ans[2] = 1;
if((a1 && b1 && c1 && d2) || (a1 && b1 && d1 && c2) || (a1 && c1 && d1 && b2) || (b1 && c1 && d1 && a2)) ans[3] = 1;
if(a1 && b1 && c1 && d1) ans[4] = 1;
for(int i = 1; i <= 4; i ++ ){
cout << ans[i];
}
cout << endl;
}
int main(){
int t;
cin >> t;
while(t -- ){
solve();
}
return 0;
}
这里空空如也
有帮助,赞一个