题意:找酷图,是否能找到路的子集,覆盖每一个点,并且只覆盖一次
思路:就是从后面开始看。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; } } }