hdu1052(贪心)

此时我的内心是复杂的,一个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;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值