题解
2026-01-30 15:54:30
发布于:广东
10阅读
0回复
0点赞
巴巴博弈。
首先注意到 可能等于 ,这堆就没用了,所以先把 去掉。然后将 从小到大排序。
假如 ,则 Macw 取啥 Penelope 取啥就行了,Penelope 必嬴。
假如 ,那么 Macw 先选堆数最少的那一个然后取完后直接换位 Penelope 不炸了。
假如 ,那么 Macw 在第 堆取 个,Penelope 要么继续保持 的状态,要么把第 堆取完,这时 Vincent 换个位 Penelope 不炸了。
注意到只要 ,那么一直取最大值一定可以使得落入 上。此时 Macw 必赢。
namespace cjdst{
void solve(){
int n, m;
std::cin >> n >> m;
std::vector <int> a, b;
for(int i = 1; i <= n; i++){
int x;
std::cin >> x;
if(x) a.push_back(x);
}
for(int i = 1; i <= m; i++){
int x;
std::cin >> x;
if(x) b.push_back(x);
}
std::sort(a.begin(), a.end());
std::sort(b.begin(), b.end());
if(a != b) std::cout << "Macw\n";
else std::cout << "Penelope\n";
}
}
时间复杂度:。
这里空空如也





有帮助,赞一个