c++|Codeforces 693 D. Even-Odd Game

c++|Codeforces 693 D. Even-Odd Game
文章图片

c++|Codeforces 693 D. Even-Odd Game
文章图片

题意分析:
【c++|Codeforces 693 D. Even-Odd Game】给定一个数组,Alice和Bob轮流抽取数组中的数,
(1)当Alice抽取的是偶数,Alice的分数加上这个数;如果是奇数,Alice不加分
(2)当Bod抽取的是奇数,Bob的分数加上这个数;如果是偶数,Bob不加分
那么我们分别来看一下奇数和偶数给Alice和Bob的情况:(score来记录分差
(1)如果是偶数的话,给Alice的话,score+x ,给Bob的话,score不变
(2)如果是奇数的话,给Alice的话,score+0,给Bob的话,score-x
那么,Alice想要将score最大,Alice一直拿最大的数;Bob也同样如此。
答案可能爆int

#include #include #include using namespace std; void solve() { int n; cin >> n; vector a(n); for(int i = 0; i < n; i++) cin >> a[i]; sort(a.rbegin() , a.rend()); // 使用逆迭代器,从大到小排序 long long s = 0; // 记录分数 for(int i = 0; i < n; i++) {if(i % 2 == 0) // Alice {if(a[i] % 2 == 0) s += a[i]; }else // Bob {if(a[i] % 2) s -= a[i]; } } if(s > 0) puts("Alice"); else if(!s) puts("Tie"); else puts("Bob"); }int main() { int t; cin >> t; while(t--) solve(); return 0; }

    推荐阅读