题目:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2397
题目很长,读的蛋疼,是个贪心题,但是一开始想得太简单了,一开始以为直接找tianji最大速度马比掉,比这个速度小的king最大速度马就行了额。
其实这题主要分两大步,先tianji和king中没比过的最大速度的马,进行比较三种状态, 如果tianji>king 那么 赢的场数+1, 小于时就可以用tianji最慢的马比掉king最快的马
如果两者速度相等就要对两人中没比过的最慢的马,进行比较的三种状态。
下面是AC代码:
#include<iostream>
#include<algorithm>
using namespace std;
int a[1010],b[1010];
int main(){
int n,i,j;
while(cin>>n&&n>0){
int w=0;
for(i=0;i<n;i++) cin>>a[i];
for(i=0;i<n;i++) cin>>b[i];
sort(a,a+n); sort(b,b+n);
int tfront=0;int kfront=0;
int trear=n-1; int krear=n-1;
while(tfront<=trear){
if(a[trear]>b[krear]) w++,trear--,krear--;
else if(a[trear]<b[krear]){
w--;
tfront++;
krear--;
}
else{
if(a[tfront]>b[kfront]){
w++;
tfront++;
kfront++;
}
else
{
if(a[tfront]==b[krear])
break;
w--;
tfront++;
krear--;
}
}
}
cout<<200*w<<endl;
}
return 0;
}