zoukankan      html  css  js  c++  java
  • ZR 舔到(博弈)

    题目链接

    满分做法:

    树可以分为所有节点度数都是奇数和至少有一个节点度数是偶数。对于第一个状态,一定转移到第二个状态;而第二个状态一定可以转移到第一个状态(一定存在一个偶节点删除后他和他的子树成为第一个状态)。

    这样当先手局面为全奇时,只能变为第二个情况,后手总能把情况再变回第一个,这样最后先手就面临一条边的情况,所以就输了。入股先手局面为有偶数时,他就成了后手。

    #include<queue>
    #include<cstring>
    #include<cstdio>
    #include<algorithm>
    #include<cmath>
    #include<iostream>
    using namespace std;
    typedef long long ll;
    const int maxm=1e6+7;
    int n;
    int du[maxm];
    int main()
    {
     scanf("%d",&n);
     for(int i=1;i<=n-1;i++)
     {
      int x,y;
      scanf("%d%d",&x,&y);
      du[x]++;
      du[y]++;	
     }
     for(int i=1;i<=n;i++)
     {
      if(du[i]%2==0)
      {
       printf("Alice
    ");
       return 0;
      }
     }
     printf("Bob
    "); 
     return 0;	
    }
    
  • 相关阅读:
    面向对象与类
    引用数据类型
    方法
    java for 语句的用法
    java 数组
    Scanner与Random
    java基本语法
    java介绍及安装。
    数据库设计
    NFS相关、NFS服务端安装配置、exportfs命令、nfs客户端的问题
  • 原文地址:https://www.cnblogs.com/lihan123/p/11805068.html
Copyright © 2011-2022 走看看