B. Jellyfish and Game
交换k轮使得第一个同学拥有数值总数最大;
很容易看出这道题需要判断k奇偶数。
当k是奇数时可以看作第一个同学操作一轮。
k为偶数可以看作两个同学各操作一轮。
#include<iostream>
#include<vector>
#include<algorithm>
#define int long long
using namespace std;
signed main()
{int T;cin>>T;while(T--){int n,m,k;cin>>n>>m>>k;vector<int>q1,q2;for(int i=1;i<=n;i++) {int t;cin>>t;q1.push_back(t);}for(int i=1;i<=m;i++) {int t;cin>>t;q2.push_back(t);}sort(q1.begin(),q1.end());sort(q2.begin(),q2.end());int ans=0;if(k%2==0){if(q1[0]<q2[m-1]) swap(q1[0],q2[m-1]);sort(q1.begin(),q1.end());sort(q2.begin(),q2.end());if(q2[0]<q1[n-1]) swap(q2[0],q1[n-1]);for(auto x:q1) ans+=x;cout<<ans<<endl;}else{for(auto x:q1) ans+=x;int ans2=ans;ans-=q1.front();ans+=q2.back();cout<<max(ans,ans2)<<endl;//考虑特殊情况,可以不操作,所以取大值}}
}