牛客网--207424--赛马

题目描述:
一天小明与他同学准备赛马,他们每人有n匹马,每匹马有一个固定的战力值,战力值高的马会战胜战力值低的马并赢得比赛。每匹马只能出场比赛一次。小明偷看到了他对手每匹马的出场顺序,小明在更改自己马出场顺序后最多能赢多少场比赛。
输入描述:
输入t,代表有t组数据。每组数据输入正整数n,每人的马匹数量。下一行输入n个值a[i],代表小明每匹马的战力值。接下来一行输入n个值b[i],代表对手按顺序出场的每匹马的战力值。(t<=10, n<1000,1<=i<=n,a[i]<1e6,b[i]<1e6)
输出描述:
小明在更改马匹出场顺序后,最多能赢的场数。
输入:
1
3
5 8 8
4 7 10
输出:
2
题意:
题目描述
题解
简单贪心,找到最小的比他大的那个数就ok了
代码:

#include
#include
#include
#include
using namespace std;

const int maxn = 1000 + 5;
int a[maxn],b[maxn];

int main(){
    int t,n;
    scanf("%d",&t);
    while(t--){
        scanf("%d",&n);
        for(int i = 0; i < n; i ++) scanf("%d",&a[i]);
        for(int i = 0; i < n; i ++) scanf("%d",&b[i]);
        int ans = 0;
        sort(a,a + n);
        sort(b,b + n);
        for(int i = 0; i < n; i ++){
            for(int j = 0; j < n; j ++){
                if(a[j] > b[i]){
                    ans ++;
                    a[j] = -1;
                    break;
                }
            }
        }
        printf("%d\n",ans);
    }
    return 0;
}

你可能感兴趣的:(算法,贪心)