• 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;	
    }
    
  • 相关阅读:
    SPL
    RPC
    file_get_content和curl的区别
    怎么在header前输出数据
    修改elinput的placehoder文字颜色
    vue清空对象中的属性值
    vue axios
    vue点击更改背景颜色
    终端的各种错误
    各种布局
  • 原文地址:https://www.cnblogs.com/lihan123/p/11805068.html
Copyright © 2020-2023  润新知