题意:
对于一个长度为 N 的点列(1,2,.......,n)从点 2 开始有各有一次操作:
1操作,将当前节点和其前面的所有节点相连。
2操作,不和前面的节点相连。
问在最终构成的图中,能否从中选取几条边,每条边都没有公共端点,而且n个点都被边覆盖。
思路:
贪心求解。
代码:
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int t,n,T,num;
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
num=1;
for(int i=2;i<=n;i++)
{
scanf("%d",&t);
if(t==2||num==0)
num++;
else
num--;
}
if(num==0)
puts("Yes");
else
puts("No");
}
return 0;
}