H. A Simple Game
哎,博弈论啊博弈论。
博不出来,我太不能博了。
题目传送门:
题面:
题意很简单,一堆牌,A摸到该牌获得
a
i
a_i
ai点数,B摸到则获得
b
i
b_i
bi点数。
问两人操作均最优,谁会获胜。
思路:
赛场想半天博不出。
我觉得博弈论还是要知道双方最优操作是什么个优法。
附题解。
代码:
#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
const int maxn = 1e6 + 10;
struct Node {
int a;
int b;
int sum;
} node[maxn];
int a[maxn], b[maxn];
bool cmp(Node x, Node y) { return x.sum > y.sum; }
int main() {
ios::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
int n;
while (cin >> n) {
for (int i = 1; i <= n; i++) cin >> a[i];
for (int i = 1; i <= n; i++) cin >> b[i];
for (int i = 1; i <= n; i++) {
node[i].a = a[i];
node[i].b = b[i];
node[i].sum = a[i] + b[i];
}
sort(node + 1, node + 1 + n, cmp);
ll suma = 0, sumb = 0;
for (int i = 1; i <= n; i++) {
if (i % 2) suma += node[i].a;
else sumb += node[i].b;
}
if (suma > sumb) cout << "Alice" << endl;
if (suma == sumb) cout << "AEMSHANA" << endl;
if (suma < sumb) cout << "Bob" << endl;
}
return 0;
}