HDU-2017 多校训练赛6-1010-Gameia
2017-08-21 19:09
393 查看
ACM模版
![](http://img.blog.csdn.net/20170821190313793?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZl96eWo=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
典型的博弈问题,需要用到搜索来搞,准确说是 树形dp,具体的题解如下:
![](http://img.blog.csdn.net/20170821190551608?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZl96eWo=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
像博弈论这种问题的关键还是静下心来慢慢找其中的博弈关系,举几个例子对比一下,看看其中导致胜负各异的核心区别在哪儿,当然,运气也是很重要的,有时候一眼就能看出来其中的规律,有时候却卡得死死地……还是经验问题。
描述
题解
找到一个感觉比官方题解更好的题解,是出自 一晌贪欢- 大佬之手。典型的博弈问题,需要用到搜索来搞,准确说是 树形dp,具体的题解如下:
像博弈论这种问题的关键还是静下心来慢慢找其中的博弈关系,举几个例子对比一下,看看其中导致胜负各异的核心区别在哪儿,当然,运气也是很重要的,有时候一眼就能看出来其中的规律,有时候却卡得死死地……还是经验问题。
代码
#include <cstdio> #include <vector> using namespace std; const int MAXN = 505; vector<int> vt[MAXN]; int n, k, flag; int sz[MAXN]; void dfs(int u) { int num = 0; // 奇数节点的个数 sz[u] = 1; for (int i = 0; i < vt[u].size(); i++) // 递归所有的子节点 { int to = vt[u][i]; dfs(to); sz[u] += sz[to]; if (sz[to] % 2 == 1) { num++; // 为奇数的节点(包括单独的叶子节点),Alice回赢 } } if (num >= 2) { flag = 1; // 这样的话也就相当于只有有两个节点的话,Bob才会赢 } } void init() { flag = 0; for (int i = 0; i < MAXN; i++) { vt[i].clear(); } } int main() { int T; scanf("%d", &T); while (T--) { init(); scanf("%d%d", &n, &k); int x; for (int i = 2; i <= n; i++) { scanf("%d", &x); vt[x].push_back(i); } flag = 0; if (n % 2 == 1 || n / 2 - 1 > k) // 奇数个或者特权数不够用,必定Alice赢 { printf("Alice\n"); } else // 节点个数为偶数个并且特权个数足够用 { dfs(1); if (flag == 1) { printf("Alice\n"); } else { printf("Bob\n"); } } } return 0; }
相关文章推荐
- HDU 2017 多校联合训练赛6 1010 6105 Gameia
- HDU 6105 (2017 多校训练赛6 1010)Gameia(博弈)
- HDU 6105 Gameia(2017多校第6场1010)
- HDU-2017 多校训练赛9-1010-Two strings
- HDU 2017 多校联合训练赛7 1010 6129 Just do it 杨辉三角 组合数的奇偶判断
- HDU-2017 多校训练赛7-1010-Just do it
- HDU-2017 多校训练赛1-1006-Function
- HDU 2017 多校联合训练赛5 5008 6092 Rikka with sebset
- HDU 2017 多校联合训练赛2 1011 6055 Regular polygon map&pair
- HDU-2017 多校训练赛8-补题
- HDU-2017 多校训练赛8-1002-Battlestation Operational
- HDU 2017 多校联合训练赛4 4003 6069 Counting Divisors 素数筛和素因数分解
- HDU-2017 多校训练赛9-1008-Numbers
- HDU-2017 多校训练赛5-1001-Rikka with Candies
- HDU-2017 多校训练赛4-1004-Dirt Ratio
- HDU 2017 多校联合训练赛3 3003 6058 Kanade's sum 枚举 模拟链表
- HDU-2017 多校训练赛9-1006-Senior Pan
- HDU-2017 多校训练赛10-1010-Schedule
- HDU-2017 多校训练赛1-1002-Balala Power!
- HDU-2017 多校训练赛5-1008-Rikka with Subset