http://202.121.199.212/JudgeOnline/problem.php?cid=1078&pid=2
分析:貪心。
用我方最好的馬去解決能夠解決的對方的最好的馬,如是才能爲剩下較弱的馬創造更大的贏的空間。
舉例田忌賽馬:
對方: 上 中 下
我方: 上 中 下
我方上可打敗對方的中和下,如果上對戰下,那麼留下的中不能取勝。
代碼:
#include <iostream>
#include <stdio.h>
#include <math.h>
#include <algorithm>
using namespace std;
#define MAXN 1004
int n;
int wincnt;
int a[MAXN],b[MAXN];
int cmp(int x,int y)
{
return x>y;
}
void deal()
{
int index=0;
int curcnt=0;
for(int i=0;i<n;i++){
for(int j=index;j<n;j++){
if(a[i]>b[j]){
index=j+1;
curcnt++;
break;
}
}
}
if(curcnt>=wincnt) printf("YES\n");
else printf("NO\n");
}
int main()
{
//freopen("in.txt","r",stdin);
while(scanf("%d",&n)!=EOF){
if( !n ) break;
wincnt=n/2+1;
// cout<<wincnt<<endl;
for(int i=0;i<n;i++) scanf("%d",&a[i]);
for(int i=0;i<n;i++) scanf("%d",&b[i]);
sort(a,a+n,cmp);
sort(b,b+n,cmp);
deal();
}
return 0;
}