NYOJ 888 取石子(九)

来源:互联网 发布:雅克比矩阵 机器人 编辑:程序博客网 时间:2024/06/04 19:34

尼姆博弈的变种,喜欢坑的童鞋快来吧!点开遇见坑

我的方法比较笨,考虑了很多特殊数据:

#include<stdio.h>#include<stdlib.h>#include<string.h>int main(){    int n,m,x[10111],i,ken1[2];    scanf("%d",&n);    while (n--)    {        int sum=0,flag=0,ken2=0;        long long ans;        memset(x,0,sizeof(x));        scanf("%d",&m);        for (i=0; i<m; i++)        {            scanf("%d",&x[i]);            sum+=x[i];            if (x[i]>1)                flag++;        }        if (flag==0)        {            if (sum&1)                printf("Hrdv\n");            else                printf("Yougth\n");        }        else if (flag==1)        {            if (m==1)            {                printf("Yougth\n");            }            else            {                for ( i=0; i<n; i++)                {                    if (x[i]>1)                    {                        sum-=x[i];                        break;                    }                }                if (sum&1)                    printf("Yougth\n");                else                    printf("Hrdv\n");            }        }        else if (flag==2)        {            for (i=0; i<m; i++)            {                if (x[i]>1)                    sum-=x[i];            }            if (sum%2==0)            {                for (i=0; i<m; i++)                {                    if (x[i]>1)                        ken1[ken2++]=x[i];                }                if (ken1[0]==ken1[1])                    printf("Hrdv\n");                else                    printf("Yougth\n");            }            else            {                for (i=0; i<m; i++)                {                    if (x[i]>1)                        ken1[ken2++]=x[i];                }                if (ken1[0]==ken1[1])                    printf("Yougth\n");                else                    printf("Hrdv\n");            }        }        else        {            ans=x[0];            for ( i=1; i<m; i++)                ans^=x[i];            if (ans==0)            {                printf("Hrdv\n");            }            else            {                printf("Yougth\n");            }        }    }    return 0;}

另一种方法:

#include<stdio.h>int main(){    int T,n,a,i,result,count;    scanf("%d",&T);    while(T--)    {        scanf("%d",&n);        result=0;        count=0;        for(i=1; i<=n; i++)        {            scanf("%d",&a);            result=result^a;            if(a>1)                count++;        }        if((count&&result)||(!count&&!result))            printf("Yougth\n");        else            printf("Hrdv\n");    }    return 0;}


3 0
原创粉丝点击