题解
2023-04-30 18:57:01
发布于:天津
37阅读
0回复
0点赞
#include <iostream>
#include <cmath>
#include <string>
#include <cstring>
#include <iomanip>
#include <algorithm>
#include <vector>
#include <cstdio>
using namespace std;
/*
数字华容道玩过吗?只有一个空格,但可以实现任何排列
这里也是一样,只需要一个空格,就可以从左上移到右下
下面的牌没进上面的牌只能在棋盘上戴着
我们只需要检查是否有时刻棋盘上一个空格也没有就可以了
/
const int N=1e5+3,inf=2147483647;
int T,n,m,k,p,cnt,flag;
int a[N];
int b[N];
int main(){
scanf("%d",&T);
while(T--){
scanf("%d%d%d",&n,&m,&k);
for(int i=1;i<=k;i++)scanf("%d",&a[i]);
p=k;
flag=0;
cnt=0;
memset(b,0,sizeof b);
for(int i=1;i<=k;i++){
b[a[i]]=1;
cnt++;
if(cnt==nm-2){
flag=1;
break;
}
while(b[p]){
cnt--;
p--;
}
}
if(flag)printf("NO\n");
else printf("YES\n");
}
return 0;
}
这里空空如也
有帮助,赞一个