小红的牌顺序也是能动的,只是找到小苯能得到最高分的情况。
找到小红卡牌最小值mn并求出小苯卡牌里大于mn数的数量,就可以用排列组合求出大于mn卡牌的排列总数和小于mn卡牌的排列总数(大于mn的排前面);
两者相加为答案
#include<bits/stdc++.h>
usingnamespacestd;
intmain()
{
int t;
cin>>t;
while(t--){
intn,mn=5e5,x=0,y=0;
cin>>n;
vector<int>a(n);
for(inti=0;i<n;i++){
cin>>a[i];
}
for(int i=0;i<n;i++){
int b;
cin>>b;
mn=min(mn,b);
}
sort(a.begin(),a.end(),greater<int>());
for(int i=0;i<n;i++){
if(a[i]>mn){
x++;
}
else{
y++;
}
}
longlongans=1;
for(int i=1;i<=x;i++){
ans=(ans*i)%998244353;
}
for(int i=1;i<=y;i++){
ans=(ans*i)%998244353;
}
cout<<ans<<endl;
}
}

京公网安备 11010502036488号