分析
记录B每个数出现的个数,然后A每出现一个减掉一个,如果出现不够减的情况就肯定不是子集。
上代码
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<map>
using namespace std;
int t,m,n,ff;
map<int,int> a;
map<int,int> b;
int main()
{
cin>>t;
while(t--)
{
scanf("%d%d",&m,&n);
for(int i=1;i<=m;i++)
{
int x;
scanf("%d",&x);
b[x]++;
}
for(int i=1;i<=n;i++)
{
int x;
scanf("%d",&x);
a[x]++;
if(b[x]-1>=0)b[x]--;
else ff=1;
}
if(ff==0) cout<<"Yes"<<endl;
else cout<<"No"<<endl;
ff=0;
a.clear();
b.clear();
}
return 0;
}