博客
关于我
Codeforces Round #646 (Div. 2) C - Game On Leaves (树上博弈)
阅读量:724 次
发布时间:2019-03-21

本文共 1325 字,大约阅读时间需要 4 分钟。

题意:
给你一颗有n个节点的无根树,现在每次可以删除一个以叶子节点为端点的所有边并删除这个节点,现在指定一个节点x,谁先删到这个节点,谁就获胜(Ayush 先手 Ashish后手)。
叶子节点是指度小于等于1的节点

思路:

如果指定的节点本来是叶子节点,那么Ayush第一次就能直接拿到它,赢得比赛。这种情况下,Ayush肯定会赢。如果Ayush不能一举拿到,那么每个人都会尽量避免让指定节点的度降到1。也就是说,指定的节点一旦度为2,其他人就不会再主动删除与它相连的边,除非对方已经没有其他选择了。这让我想到这是一场拿数的博弈,谁先拿到只剩最后两个节点时谁就赢了。如果初始节点数n是偶数,Ayush一开始就能掌控节奏,最后让Ashish陷入孤立无援;反之,如果n是奇数,情况就有所不同,Ashish可能有机会反败为胜。

AC代码:

```cpp#include
#include
using namespace std;

int read() {char c = getchar();int x = 0, s = 1;while (c < '0' || c > '9') {if (c == '-') s = -1;c = getchar();}while (c >= '0' && c <= '9') {x = x * 10 + (c - '0');c = getchar();}return x * s;}

#define NewNode (TreeNode *)malloc(sizeof(TreeNode))#define Mem(a, b) memset(a, b, sizeof(a))

const int N = 1e5 + 5;const long long INFINF = 0x7f7f7f7f7f7f7f;const int INF = 0x3f3f3f3f;const double EPS = 1e-7;const unsigned long long mod = 998244353;const double II = acos(-1);const double PP = II * 1.0 / 180.0;

typedef long long ll;typedef unsigned long long ull;typedef pair<int, int> pii;typedef pair<ll, ll> piil;

int main() {std::ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int t;while (t--) {int n, x;cin >> n >> x;int ru[1050] = {0};for (int i = 0; i < n-1; ++i) {cin >> a >> b;ru[a]++, ru[b]++;}if (ru[x] <= 1) {cout << "Ayush\n";} else if (n % 2 == 0) {cout << "Ayush\n";} else {cout << "Ashish\n";}}}

转载地址:http://ynirz.baihongyu.com/

你可能感兴趣的文章
php微信公众号开发access_token获取
查看>>
php微信公众号开发微信认证开发者
查看>>
php微信公众号开发用户基本信息
查看>>
php怎么将对象变成数组,php怎么将对象转换成数组
查看>>
RabbitMQ - 消息堆积问题的最佳解决方案?惰性队列
查看>>
php怎样比较两数大小,jquery如何判断两个数值的大小
查看>>
PHP性能监控 - 开启xhprof(一)
查看>>
PHP性能监控 - 怎么看xhprof报告(二)
查看>>
php截取字符串代码,PHP字符串截取_php
查看>>
php截取字符串,无乱码
查看>>
php手冊,php手冊之變量范圍
查看>>
PHP手机号码归属地查询API接口
查看>>
PHP执行耗时脚本实时输出内容
查看>>
PHP扩展安装
查看>>
PHP扩展数据库连接参数说明详解
查看>>
php把get参数放入数组_php怎么将数组转为url参数?
查看>>
PHP投票小程序
查看>>
php拆分数组不改变key值
查看>>
php接口返回数据 用echo 还是return?
查看>>
php接口返回状态,大家一般怎么规范接口返回内容
查看>>