女赛--Graph Theory

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

    }
}

猜你喜欢

转载自blog.csdn.net/qq_37868325/article/details/80275313