目录
1.题目描述
问题 I: 捕食关系
时间限制: 1.000 Sec 内存限制: 128 MB
提交 状态
题目描述
在海洋中,有食肉类的鱼和食草类的鱼,某种食肉类的鱼捕食食草类的鱼当且仅当自己的体重大于对方。
现在给出两类鱼各自的体重,求有多少对捕食关系。
输入
每组测试数据有三行。
第一行有两个整数 m,n(1<=m,n<=20000),分别代表食肉类的鱼的种类数和食草类的鱼的种类数。
第二行 m 个数,第三行 n 个数,代表各自的体重。
输出
一个整数,表示有多少对捕食关系。
样例输入 Copy
5 3 8 1 7 3 1 3 6 1
样例输出 Copy
7
2.AC
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
int a[20005], b[20005], ans;
int main () {
int m, n;
scanf("%d%d", &m, &n);
for (int i = 1; i <= m; i++) {
scanf("%d", &a[i]);
}
for (int i = 1; i <= n; i++) {
scanf("%d", &b[i]);
}
sort(b+1, b+n+1);
for (int i = 1; i <= m; i++) {
int l = 1, r = n;
while (l <= r) {
int mid = l + (r - l) / 2;
if (a[i] > b[mid]) l = mid + 1;
else r = mid - 1;
}
if (b[r]>=a[i]) r--;
ans += r;
}
cout<<ans;
}