此时我的内心是复杂的,一个k和t的区别,找了1小时!!!
在这里小装一逼,虽然自己找bug这么久,但是这个题还是挺简单的。。
思路:
1.如果田忌最慢的马可以战胜齐王最慢的马,就这样做,win++。
2.如果田忌最慢的马不可以战胜齐王最慢的马,所以让它牺牲自己,输给齐王最快的马,lose++。
3,。如果速度一样,打平手并不是最好的选择哦,因为这个马已经是最慢的了,自己队友肯定可以战胜对方这个慢马,胜1输1收益不受影响,反而自己这个马可以去与齐王最快的马比较,创造自己最大的价值。从而田忌方最快的马可能会因为失去强劲的对手而多胜利一场。
#define _CRT_SECURE_NO_DEPRECATE
#include<stdio.h>
#include<math.h>
#include<string>
#include<cstring>
#include<string.h>
#include<algorithm>
#include<algorithm>
#include<iostream>
using namespace std;
int main() {
int n;//n<=1000
int T[1010], K[1010];
while (scanf("%d", &n) != EOF && n) {
for (int i = 0;i < n;i++)
cin >> T[i];
for (int i = 0;i < n;i++)
cin >> K[i];
sort(T, T + n);
sort(K, K + n);
int win = 0, lose = 0;
int t_slow = 0, t_fast = n - 1;
int k_slow = 0, k_fast = n - 1;
while (t_slow <= t_fast) {
if (T[t_slow] > K[k_slow]) {//田忌最慢的马可以战胜齐王最慢的马
win++;
t_slow++;
k_slow++;
}
else if (T[t_slow] < K[k_slow]) {//田忌最慢的马不可以战胜齐王最慢的马
lose++; //则让最慢的马与齐王最快的马打比赛
t_slow++;
k_fast--;
}
else {//最慢马的速度相等情况下,因为这是最慢的马,即使自己输了
//后面田忌队友会帮忙赢回来,收益不会受到影响。
//但田忌可以用最慢的消耗齐王最快的马,创造最大的价值
if (T[t_fast] > K[k_fast]) {//田忌实力胜利
win++;
t_fast--;
k_fast--;
}
else {
if (T[t_slow] < K[k_fast])
lose++;
t_slow++;
k_fast--;
}
}
}
cout << 200 * (win - lose) << endl;
}
system("pause");
return 0;
}