当前位置: 首页 > news >正文

《P3143 [USACO16OPEN] Diamond Collector S》

题目描述

奶牛 Bessie 一直喜欢闪闪发光的物体,她最近在业余时间开始了一项爱好——挖掘钻石!她收集了 N 颗大小各不相同的钻石(N≤50,000),并希望将它们中的一部分放在谷仓里的两个展示柜中展示。

由于 Bessie 希望每个展示柜中的钻石大小相对接近,她决定如果两颗钻石的大小相差超过 K,就不能将它们放在同一个展示柜中(如果两颗钻石的大小相差恰好为 K,则可以将它们一起展示在同一个展示柜中)。给定 K,请帮助 Bessie 确定她可以在两个展示柜中一起展示的最大钻石数量。

输入格式

输入文件的第一行包含 N 和 K(0≤K≤1,000,000,000)。

接下来的 N 行每行包含一个整数,表示一颗钻石的大小。所有钻石的大小均为正数且不超过 1,000,000,000。

输出格式

输出一个正整数,表示 Bessie 可以在两个展示柜中一起展示的最大钻石数量。

显示翻译

题意翻译

输入输出样例

输入 #1复制

7 3
10
5
1
12
9
5
14

输出 #1复制

5

代码实现:

#include<bits/stdc++.h>
using namespace std;
const int N = 50010;
int n, k;
int a[N];
int left_max[N];

int main() {
    cin >> n >> k;
    for (int i = 0; i < n; i++) {
        cin >> a[i];
    }
    // 对钻石按大小进行升序排序
    sort(a, a + n);

    // 计算每个钻石作为左端点时,单展示柜的最大钻石数量
    int right = 0;
    for (int left = 0; left < n; left++) {
        while (right < n && a[right] - a[left] <= k) {
            right++;
        }
        left_max[left] = right - left;
    }

    // 找出两个不重叠的最大单展示柜组合
    int ans = 0;
    for (int i = 0; i < n; i++) {
        int first_case = left_max[i];
        int second_case = 0;
        for (int j = i + first_case; j < n; j++) {
            second_case = max(second_case, left_max[j]);
        }
        ans = max(ans, first_case + second_case);
    }

    cout << ans;
    return 0;
}    

相关文章:

  • RVO2(C#版)源码分析
  • 文章分享《Nature Communications》|ATAC-seq开启新视角:探索Shox2基因沙漠的神秘功能
  • Java基础学习内容大纲
  • g4f升级到0.5.2.0版本了,但是有些机器无法运行,只能降级到0.5.1.2版本
  • Springboot使用登录拦截器LoginInteceptor来做登录认证
  • Python类的力量:第一篇:数据组织革命——用类替代“临时数据结构”
  • 6.3 数据分析与决策支持:数据洞察生成与决策辅助系统
  • EPSG的作用
  • 【LaTex】3.8流程图绘制
  • 水利三维可视化平台怎么做?快速上手的3步指南
  • AI日报 - 2025年04月30日
  • 【C++游戏引擎开发】第29篇:物理引擎(Bullet)—刚体动力学系统
  • C++:Lambda表达式
  • MS2111多点低压差分(M-LVDS)线路驱动器和接收器
  • __proto__与prototype
  • NFS-网络文件系统
  • 域名与DNS理解
  • 基于Springboot + vue实现的列书单读书平台
  • OVP UVP与UVLO对比
  • 【办公类-89-03】20250429AI写的研讨记录,清除格式,统一格式,名字替换。部分加粗,添加页眉
  • 史学巨擘的思想地图与学术路径——王汎森解析梁启超、陈寅恪、傅斯年
  • 外交部:美方应在平等、尊重和互惠的基础上同中方开展对话
  • 卸任兰大校长后,严纯华院士重返北大作报告
  • 文化润疆|让新疆青少年成为“小小博物家”
  • 第1现场|无军用物资!伊朗港口爆炸已遇难40人伤1200人
  • 人社部:将会同更多部门分行业、分领域制定专项培训计划