看到这个题一开始是想到有栈来做的,或者是直接看
#include <stdio.h>
#include <string.h>
#include <map>
#include <stack>
#include <queue>
#include <vector>
#include <algorithm>
using namespace std;
int a[10099],pos[10099];
int main()
{
//freopen("1.txt","r",stdin);
//freopen("22.txt", "w",stdout);
int n,m;
scanf("%d", &n);
while(n--)
{
memset(pos,-1,sizeof(pos));
memset(a, 0,sizeof(a));
scanf("%d",&m);
for(int i=1; i<2*m; i+=2)
scanf("%d", &a[i]);
for(int i =2; i<=2*m; i+=2)
scanf("%d", &a[i]);
int cout,num=0,mun2=0;
for(int i=1;i<=2*m;i++)
{
if(pos[a[i]]==-1)
{
pos[a[i]]=i;
continue;
}
else
{
cout=0;
for(int k=pos[a[i]];k<i; k++)
{
if(a[k]!=-1)
{
cout++;
pos[a[k]]=-1;
a[k]=-1;
}
}
if(i%2)
num+=cout;
else
mun2+=cout;
}
}
//printf("%d %d\n",num,mun2);
if(num>=mun2)
puts("Yes");
else
puts("No");
}
return 0;
}