题意:找酷图,是否能找到路的子集,覆盖每一个点,并且只覆盖一次
思路:就是从后面开始看。1是跟前面都连,2是不连,对于每一个2的点,因为他不能与前面的连,所以只能与后面某一个1的点相连,即可得,从后往前便利,2的个数永远小于等于1的个数才是Yes,,因为以前做过,今天直接敲,结果“轻敌”。。智障细节错误WA+2.。。。。
感想:这个题前面也做过,就是那个题意再比赛期间硬是没有读懂的!!!比赛后查了博客,看别人的题意描述仍是没有看懂!!是听A的大佬给讲了才知道的!!!
代码:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<string.h>
#include<queue>
using namespace std;
#define INF 0x3f3f3f3f;
int a[100005],t,n,x,y;
int main()
{
cin>>t;
while(t--)
{
scanf("%d",&n);
for(int i=2;i<=n;i++)
{
scanf("%d",&a[i]);
}
x=0;y=0;
if(n%2==1)
{
cout<<"No"<<endl;
}
else
{
for(int i=n;i>=2;i--)
{
if(a[i]==1)
x++;
else y++;
if(x<y){cout<<"No"<<endl;break;}
}
if(x>=y) cout<<"Yes"<<endl;
}
}
}