hdu:田忌赛马(贪心,双指针)

发布时间 2023-08-25 18:20:03作者: ruoye123456

Problem Description
“田忌赛马”是中国历史上一个著名的故事。

大约2300年前,齐国大将田忌喜欢和国王赛马,并且约定:每赢一场,对方就要付200元。

假设已知田忌和国王的各自马匹的速度都不相同,请计算田忌最好的结果是什么。

Input
输入包含多组测试样例。
每组样例的第一行是一个整数n(n <= 1000),表示田忌和国王各自参赛的马匹数量。
接下来一行的n个整数表示田忌的马的速度,再接下来一行的n个整数表示国王的马的速度。
n为0时,表示输入数据的结束。

Output
每组数据输出一行,表示田忌最多能够赢得的金额。

Sample input
3
92 83 71
95 87 74
2
20 19
22 18
0
Sample output
200
0

贪心,双指针

点击查看代码
#include<bits/stdc++.h>
using namespace std;
const int N=1010;
int a[N],b[N];
int main()
{
	int n;
	while(cin>>n,n)
	{
		for(int i=0;i<n;++i) cin>>a[i];
		for(int i=0;i<n;++i) cin>>b[i];
		sort(a,a+n);sort(b,b+n);
		int res,cnt=0;
		for(int i=0,j=0;i<n&&j<n;i++)
		{
			if(a[i]>b[j]) cnt++,j++;
		}
		res=cnt*200+(cnt-n)*200;
		cout<<res<<'\n';
	}
}