CF-388C. Fox and Card Game(博弈、贪心)

CF传送门

洛谷传送门


解题思路

贪心:若序列长度为偶数,则每人拿一半,若为奇数,则所有奇数序列的中间元素从大到小排序,两人依次拿,剩下的两边的也是一人一半。

证明(感性):若对方想要抢走你那一半的元素,说明你那一半的元素肯定更大,你不可能让对面抢去,所以每个人都守着自己这一半的元素。

真不明白为啥紫题。

AC代码

 1 #include<cstdio>
 2 #include<iostream>
 3 #include<cstring>
 4 #include<iomanip>
 5 #include<cmath>
 6 #include<algorithm>
 7 using namespace std;
 8 int n,m,ans1,ans2,cnt,x,a[10005];
 9 int main(){
10     cin>>n;
11     for(int i=1;i<=n;i++){
12         cin>>m;
13         for(int j=1;j<=m/2;j++){
14             cin>>x;
15             ans1+=x;
16         }
17         if(m&1){
18             cin>>a[++cnt];
19         }
20         for(int j=1;j<=m/2;j++){
21             cin>>x;
22             ans2+=x;
23         }
24     }
25     sort(a+1,a+cnt+1);
26     for(int i=cnt;i>=1;i--){
27         if((cnt-i)&1) ans2+=a[i];
28         else ans1+=a[i];
29     }
30     cout<<ans1<<" "<<ans2;
31     return 0;
32 }
原文地址:https://www.cnblogs.com/yinyuqin/p/14674017.html