bzoj 1034 贪心
首先如果我们想取得分最高的话,肯定尽量赢,实在赢不了的话就耗掉对方最高的,那么就有了贪心策略,先排序,我方最弱的马和敌方最弱的相比,高的话赢掉,否则耗掉敌方最高的马。
对于一场比赛,总分是一定的,所以两问实际上是等效的。
/************************************************************** Problem: 1034 User: BLADEVIL Language: C++ Result: Accepted Time:264 ms Memory:1588 kb ****************************************************************/ //By BLADEVIL #include<cstdio> #include<algorithm> #define maxn (100000+10) using namespace std; int n,a[maxn],b[maxn]; int calc() { int i,j,k,l,ans; i=j=1; k=l=n; ans=0; while (i<=k) { if (a[i]>b[j]) ans+=2,i++,j++; else if(a[k]>b[l]) ans+=2,k--,l--; else ans+=(a[i]==b[l]),i++,l--; } return ans; } int main() { scanf("%d",&n); for (int i=1;i<=n;i++) scanf("%d",&a[i]); for (int i=1;i<=n;i++) scanf("%d",&b[i]); sort(a+1,a+1+n); sort(b+1,b+1+n); printf("%d ",calc()); swap(a,b); printf("%d\n",2*n-calc()); return 0; }