cf 489B(贪心)

简介: cf 489B(贪心)

有n个男孩和m个女孩(1≤n,m≤100),我们知道他们每个人的技能值(男孩为a[i],女孩为b[i],每个技能值都≤100)。


当且仅当第A个男孩和第B个女孩的技能值相差不超过1时,他们将成为一对舞伴。


给定n、m和他们各自的技能值,输出他们能组成的舞伴最大对数(格式见样例)。


思路:贪心。先分别排序,设定两个指针,然后进行是否配对判断,直到其中一个指针指到最后为止。

#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 5;
int a[maxn], b[maxn], n, m;
int main() {
  cin >> n;
  for (int i = 1; i <= n; i++) cin >> a[i];
  cin >> m;
  for (int i = 1; i <= m; i++) cin >> b[i];
  sort (a + 1, a + n + 1);
  sort (b + 1, b + m + 1);
  int p1 = 1, p2 = 1;
  int ans = 0;
  while (p1 <= n && p2 <= m) {
    if (abs(a[p1] - b[p2]) <= 1) p1++, p2++, ans++; //如果可以配对
    else if (a[p1] > b[p2])p2++; //如果a[i] > b[j] j++
    else if (a[p1] < b[p2])p1++; //如果a[i] < b[j] i++
  }
  cout << ans << endl;
  return 0;
}
相关文章
|
7月前
|
存储 自然语言处理 算法
【算法】----BF算法&KMP算法
【算法】----BF算法&KMP算法
74 0
|
7月前
CF1132D Streessful Training(二分+贪心+优先队列*2300)
CF1132D Streessful Training(二分+贪心+优先队列*2300)
39 0
|
Go vr&ar
CF中的线段树题目
CF中的线段树题目
84 0
|
算法 安全 Java
BF算法和KMP算法
BF算法和KMP算法
165 0
BF算法和KMP算法
AC 剑指 Offer 12. 矩阵中的路径
AC 剑指 Offer 12. 矩阵中的路径
84 0
AC 剑指 Offer 12. 矩阵中的路径
AC Leetcode 238. 除自身以外数组的乘积
AC Leetcode 238. 除自身以外数组的乘积
55 0
AC Leetcode-56 合并区间
AC Leetcode-56 合并区间
69 0
|
算法
AC Leetcode.三数之和
AC Leetcode.三数之和
86 0
|
Shell Windows
CF1567E. Non-Decreasing Dilemma(线段树)
CF1567E. Non-Decreasing Dilemma(线段树)
89 0
|
算法
【每日算法】AB13 拓扑排序
【每日算法】AB13 拓扑排序
116 0