HDU 6105 Gameia [想法题]
2017-08-10 18:25
267 查看
题意:Alice和Bob玩一个游戏,开始有一颗没有颜色的树,Bob和Alice分别对树进行染色,Alice每次将一个没有颜色的点涂成白色,Bob每次将一个没有颜色的点涂成黑色,并且可以将与涂上黑色的点直接相邻的点变为黑色,假如最后树上存在白色点,Alice赢,否则Bob赢。Bob还有一个特权,可以在任意时候,删除任意一条边。
题解:通过推论发现,当树为奇数点数时,Alice必应,偶数的时候,假如Bob能将树划分为所有都是只有两个点相连的话,Bob赢。
AC代码:
题解:通过推论发现,当树为奇数点数时,Alice必应,偶数的时候,假如Bob能将树划分为所有都是只有两个点相连的话,Bob赢。
AC代码:
#include<stdio.h> #include<vector> using namespace std; vector<int>vt[505]; int size[505]; int flag=0; void dfs(int u) { int num=0; size[u]=1; for(int i=0;i<vt[u].size();i++) { int to=vt[u][i]; dfs(to); size[u]+=size[to]; if(size[to]%2==1)num++; } if(num>=2)flag=1; } int main() { int T; scanf("%d",&T); while(T--) { for(int i=0;i<505;i++)vt[i].clear(); int n,k; scanf("%d%d",&n,&k); for(int i=2;i<=n;i++) { int f; scanf("%d",&f); vt[f].push_back(i); } flag=0; dfs(1); if(flag==1||n%2==1)printf("Alice\n"); else if(n/2-1>k)printf("Alice\n"); else printf("Bob\n"); } }
相关文章推荐
- hdu 6105 Gameia(博弈)
- HDU 6105 Gameia
- HDU 6105 Gameia(树+博弈)
- HDU 6105 Gameia
- hdu 6105 Gameia(博弈)
- Gameia(HDU 6105)
- hdu 6105 Gameia(博弈)
- hdu 6105 Gameia(树形DP)
- HDU 6105 Gameia (树上博弈 17多校赛第六场)
- hdu 6105 Gameia(博弈)
- HDU 6105 Gameia 博弈(思维)
- HDU 6105 Gameia【思维+博弈】
- hdu 6105 Gameia(博弈)
- Hdu 6105 Gameia【思维+二分匹配】
- 【树上博弈】 hdu 6105 Gameia
- hdu 6105 Gameia(博弈)
- HDU 6105 (2017 多校训练赛6 1010)Gameia(博弈)
- hdu 6105 Gameia(博弈)
- HDU_6105 Gameia 【博弈】
- hdu 6105 Gameia(博弈)