题目
思路
直接用map判断即可
代码
第一种
#include<iostream>
#include<cstdio>
#include<map>
using namespace std;
map<int,int> b,c;
int a[1000010];
int T,n,m,x;
int main()
{
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&m,&n);
for(int i=1; i<=m; i++)
{
scanf("%d",&x);
b[x]++;
}
for(int i=1; i<=n; i++)
{
scanf("%d",&a[i]);
c[a[i]]++;
}
int w=0;
for(int i=1; i<=n; i++)
if(c[a[i]]>b[a[i]])
{
w=1;
break;
}
if(w==0)
printf("Yes\n");
else
printf("No\n");
b.clear();
c.clear();
}
return 0;
}
第二种
#include<iostream>
#include<cstdio>
#include<map>
using namespace std;
map<int,int> b;
int T,n,m,x;
int main()
{
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&m,&n);
for(int i=1; i<=m; i++)
{
scanf("%d",&x);
b[x]++;
}
int w=0;
for(int i=1; i<=n; i++)
{
scanf("%d",&x);
if(b[x]-1>=0)
b[x]--;
else
w=1;
}
if(w==0)
printf("Yes\n");
else
printf("No\n");
b.clear();
}
return 0;
}