比较神奇的贪心
有点类似于田忌赛马.
如果我方最弱强于对面最弱,则直接最弱pk最弱.
如果我方最强强于对面最强,那么直接最强间pk.
否则,试着用我方最弱 pk 对方最强,看是否能打成平手.
code:
#include <bits/stdc++.h> #define N 100006 #define setIO(s) freopen(s".in","r",stdin) using namespace std; int solve(int a[],int b[],int n) { int ans=0; int h=1,t=n,l=1,r=n; while(h<=t&&l<=r) { if(a[h]>b[l]) { ans+=2; ++h,++l; } else if(a[t]>b[r]) { ans+=2; --t,--r; } else { ans+=(a[h]==b[r]); ++h,--r; } } return ans; } int arr[N],brr[N]; int main() { // setIO("input"); int i,j,n; scanf("%d",&n); for(i=1;i<=n;++i) { scanf("%d",&arr[i]); } for(i=1;i<=n;++i) { scanf("%d",&brr[i]); } sort(arr+1,arr+1+n); sort(brr+1,brr+1+n); printf("%d %d",solve(arr,brr,n),2*n-solve(brr,arr,n)); return 0; }