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;
}