题意:给你一个数组,问里面最多能匹配出多少对,满足abs(a[i] - a[j]) >= k;

思路:首先肯定要排序。

思路1(尺取法):看了dreamoon的代码明白的。我们可以寻找一个最长的段,这段的最大值和最小值的差小于k,假设数组长度是n,那么答案是min(n / 2, n - mx)。为什么呢?如果mx大于n / 2,容易发现我们最多只能构造出n - mx对,mx小于同理。

代码:

#include <bits/stdc++.h>
#define LL long long
#define db double
#define INF 0x3f3f3f3f
#define pii pair<int, int>
using namespace std;
const int maxn = 200010;
int a[maxn], re[maxn], tot;
bool v[maxn];
int main() {
int n, m, ans = 0;
scanf("%d%d", &n, &m);
for (int i = 1; i <= n; i++) {
scanf("%d", &a[i]);
}
sort(a + 1, a + 1 + n);
int l = 1, r = 1;
int mx = 0;
for(; r <= n; r++) {
while(a[l] + m <= a[r]) l++;
mx = max(mx, r - l + 1);
}
printf("%d\n", min(n / 2, n - mx));
}

思路2:二分。

二分取前几个元素,判断只和后几个元素能不能匹配即可。

最新文章

  1. AFNetworking 与 gbk 编码格式后台数据的使用
  2. MongoDB导入(mongoimport)-导出(mongoexport)工具使用
  3. Github 安全类Repo收集整理
  4. struts2 学习路线
  5. hdu 4521 小明系列问题——小明序列(线段树 or DP)
  6. Visual Studio 2010 单元测试
  7. Jlink更新新固件USB连接不上的问题
  8. sql server 修改字段大小
  9. 爬虫总结_python
  10. LFLiveKit架构简介
  11. hdu--4148--Length of S(n)
  12. js BOM DOM
  13. Loadrunner初学
  14. 解决ssh连接linux服务器速度慢
  15. 检测浏览器是否支持ES6
  16. wx-charts 微信小程序图表 -- radarChart C# .net .ashx 测试
  17. centos安装系统全过程
  18. Leetcode 217.存在重复元素 By Python
  19. 实验五 Java网络编程及安全 实验报告 20135232王玥
  20. zend studio 连PHP自带系统函数 常量都不提示

热门文章

  1. Ubuntu14.04搭建Boa服务
  2. Failed to resolve com.android.support:support-compat:25.4.0
  3. C# WinForm 提示框延迟自动关闭
  4. Struts2中Action类的三种写法
  5. Windows下Maven安装 + eclipse集成
  6. 使用nano编辑器进行查找和替换
  7. nucleus plus学习总结(后续)
  8. 查看电脑是否安装jdk以及安装了的路径
  9. CentOS 安装MySQL rpm方式安装
  10. (10)C++ 使用类