P7939题解

思路

直接模拟,对于每组测试数据,分别调整 A 队前 n 个人和 B 队后 n 个人,得分最大值当然是 \(2n\)

例如在第一组数据中,A 队和 B 队四个人都分别出石头和剪刀,那么我们可以把 A 队第一个人调整为布,再把 B 队第二个人调整为布。所以最后的得分就是 4。

代码

模拟思路即可

#include<bits/stdc++.h>
using namespace std;
int a[200010],b[200010];
int main(){
    int t;
    cin>>t;
    while(t--){
        int n;
        cin>>n;
        for(int i=1;i<=2*n;i++) cin>>a[i];
        for(int i=1;i<=2*n;i++) cin>>b[i];
        cout<<2*n<<endl;
        for(int i=1;i<=n;i++){//调整 A 队前 n 个人
            if(b[i]==1) a[i]=3;
            if(b[i]==2) a[i]=1;
            if(b[i]==3) a[i]=2;
        }
        for(int i=1;i<=2*n;i++) cout<<a[i]<<" ";
        cout<<endl;//别忘了换行
        for(int i=n+1;i<=2*n;i++){//调整 B 队后 n 个人
            if(a[i]==1) b[i]=2;
            if(a[i]==2) b[i]=3;
            if(a[i]==3) b[i]=1;
        }
        for(int i=1;i<=2*n;i++) cout<<b[i]<<" ";
        cout<<endl;
    }
}
posted @ 2022-02-09 19:27  cycwss  阅读(36)  评论(0)    收藏  举报