专栏文章

题解:CF1363C Game On Leaves

CF1363C题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@mioegu23
此快照首次捕获于
2025/12/02 17:53
3 个月前
此快照最后确认于
2025/12/02 17:53
3 个月前
查看原文

CF1363C Game On Leaves题解

题目大意

给定一颗无向无根树,每次操作可以删去一个叶子结点。
给定一个特殊节点,先删除这个节点的人赢,假定两个人使用最优策略,问是先手赢还是后手赢。

分析

必胜态:当 n2n \le 2 或特殊节点为叶子节点时,必胜。
必败态:当 n=3n = 3 且特殊节点不为叶子结点时,必败。因为此时删除任意一个节点,必定会进入到 n=2n = 2 时的必胜态,所以此时先手必败。
所以我们只需要判断 n3n - 3 的奇偶性,为奇数则后手赢,否则先手赢。
这部分代码如下:
CPP
if(n <= 2 || d[x] == 1)//d是每个节点的度数
    cout << "Ayush" << endl;
else
    cout << ((n - 3) % 2 == 0 ? "Ashish" : "Ayush") << endl;//这里用到了三目运算符,格式为 A ? B : C,如果 A 为真,则执行 B,否则执行 C
有没有其它情况?
肯定没有。
我们先假设特殊节点为根节点。如果第一个人删除某节点后,特殊节点为叶子结点,那么此时第一个人必败,又因为两人都使用的是最优策略,所以不会出现这种情况。

评论

0 条评论,欢迎与作者交流。

正在加载评论...