思路:贪心博弈。
如果是偶数个一人一半;如果是奇数个,中间那个数单独取,其他一人一半。单独取的数排一下序再取。
代码:
#include<bits/stdc++.h> using namespace std; const int N=105; vector<int>a; int main() { int n; int ans=0,sum=0; cin>>n; for(int i=0;i<n;i++) { int k,x; cin>>k; for(int j=0;j<k;j++) { cin>>x; sum+=x; if(k&1) { if(j==k/2)a.push_back(x); } if(j<k/2)ans+=x; } } sort(a.begin(),a.end(),[](int a,int b){return a>b;}); for(int i=0;i<a.size();i+=2)ans+=a[i]; cout<<ans<<' '<<sum-ans<<endl; return 0; }