分析:
只是瞎构造了一下,从后面往前扫,如果遇到2,那么需要找后面的cnt里找一个配对,cnt–,如果遇到一个1,那么计入cnt。
如果n是奇数就不可行。
代码:
#include <iostream>
#include <cstdio>
#include <vector>
#include <cstring>
#include <stack>
#include <queue>
using namespace std;
const int maxn = 1e5 + 5;
int a[maxn];
int main() {
int T; cin>>T;
while (T --) {
int n; scanf("%d", &n);
for (int i = 1; i < n; i ++)
scanf("%d", a + i);
if (n & 1) puts("No");
else {
int tmp = 0;
bool flag = true;
for (int i = n - 1; i > 0; i --) {
if (a[i] == 1) tmp ++;
else {
if (tmp <= 0) {
flag = false;
break;
}
else
tmp --;
}
}
if (flag) puts("Yes");
else puts("No");
}
}
return 0;
}