每日OJ_牛客_ruby和薯条_排序+二分/滑动窗口_C++_Java

目录

ruby和薯条_排序+二分/滑动窗口

题目解析

C++代码

Java代码


ruby和薯条_排序+二分/滑动窗口

ruby和薯条

描述:

ruby很喜欢吃薯条。
有一天,她拿出了n根薯条。第i根薯条的长度为ai。
ruby认为,若两根薯条的长度之差在l和r之间,则认为这两根薯条有“最萌身高差”。
用数学语言描述,即若l≤|ai-aj|≤r,则第i根薯条和第j根薯条有“最萌身高差”。
ruby想知道,这n根薯条中,存在多少对薯条有“最萌身高差”?
注:次序不影响统计,即认为(ai,aj)和(aj,ai)为同一对。

输入描述:

第一行三个正整数n,l,r,含义见题目描述。 (1≤n≤200000,1≤l≤r≤1e9)
第二行n个正整数ai,分别代表每根薯条的长度。 (1≤ai≤1e9)

输出描述:

一个正整数,代表,代表“最萌身高差”的薯条对数。


题目解析

  • 库函数排序+二分

C++代码

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;int main()
{int n = 0, l = 0, r = 0;cin >> n >> l >> r;vector<int> a(n);for(int i = 0; i < n; ++i){cin >> a[i];    }sort(a.begin(), a.end());long long res = 0;for(int i = 0; i < n; ++i) // 二分{int left = -1, right = -1;auto it1 = lower_bound(a.begin(), a.end(), a[i] + l); // 找第一个大于等于a[i] + l的left = it1 - a.begin();auto it2 = upper_bound(a.begin(), a.end(), a[i] + r); // 找第一个大于a[i] + r的right = it2 - a.begin() - 1;if(left != -1 && right != -1 && right >= left)res += right - left + 1;}cout << res << endl;//     int begin = 0, end = 1, res = 0, flag = 0; // 用的滑动窗口,没想到加前缀和,所以错了
//     while(begin < end && end < n)
//     {
//         //cout << begin << " " << end << " res " << a[end] - a[begin] << endl;
//         while(end < n)
//         {
//             //cout << begin << " and " << end << " res " << a[end] << " "<< a[begin] << endl;
//             if(a[end] - a[begin] >= l && a[end] - a[begin] <= r)
//             {
//                 ++res;
//                 if(a[end] - a[begin] == r)
//                     break;
//             }
//             ++end;
//         }
//         ++begin;
// //         end = flag;
//         end = begin + 1;
//     }return 0;
}

Java代码

import java.util.*;
public class Main
{public static int n, l, r;public static int[] arr;public static void main(String[] args){Scanner in = new Scanner(System.in);n = in.nextInt(); l = in.nextInt(); r = in.nextInt();arr = new int[n];for(int i = 0; i < n; i++) arr[i] = in.nextInt();Arrays.sort(arr);long ret = 0;for(int i = 1; i < n; i++){int L, R;// 找左端点int left = 0, right = i - 1;while(left < right){int mid = (left + right) / 2;if(arr[mid] >= arr[i] - r) right = mid;else left = mid + 1;}if(arr[left] >= arr[i] - r) L = left;else L = left + 1;// 找右端点left = 0; right = i - 1;while(left < right){int mid = (left + right + 1) / 2;if(arr[mid] <= arr[i] - l) left = mid;else right = mid - 1;}if(arr[left] <= arr[i] - l) R = left;else R = left - 1;if(R >= L) ret += R - L + 1;}System.out.println(ret);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/77320.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从 ComponentActivity 看 Android Activity 的演变与 Jetpack 架构融合

在 Jetpack Compose 出现后&#xff0c;开发者可能会注意到一个变化&#xff1a;项目的主 Activity 默认从过去熟悉的 AppCompatActivity 变成了 ComponentActivity。这个变化并非偶然&#xff0c;而是 Android 架构在向现代组件化演进过程中一个关键的转折点。本文将围绕 Comp…

Linux 防火墙( iptables )

目录 一、 Linux 防火墙基础 1. 防火墙基础概念 &#xff08;1&#xff09;防火墙的概述与作用 &#xff08;2&#xff09;防火墙的结构与匹配流程 &#xff08;3&#xff09;防火墙的类别与各个防火墙的区别 2. iptables 的表、链结构 &#xff08;1&#xff09;规则表 …

大数据 - 2. Hadoop - HDFS(分布式文件系统)

前言 为什么海量数据需要分布式存储技术&#xff1f; 文件过大时&#xff0c;单台服务器无法承担&#xff0c;要靠数量来解决。数量的提升带来的是网络传输、磁盘读写、CPU、内存等各方面的提升。 众多的服务器一起工作&#xff0c;如何保证高效且不出错 &#xff1f; 大数…

使用cursor进行原型图设计

1.下载cursor 2.模式设置&#xff1a; 模型使用claude-3.7-sonnet的think模式 3.引导词模板&#xff1a; 我想要开发一个中高考英语口语考试的模拟考试系统&#xff0c;我需要将上面的这个应用输出成高保真的原型图设计。请考虑以下的规范&#xff1a; 用户体验&#xff1…

极狐GitLab 功能标志详解

极狐GitLab 是 GitLab 在中国的发行版&#xff0c;关于中文参考文档和资料有&#xff1a; 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 功能标志 (BASIC ALL) 使用功能标志&#xff0c;您可以将应用程序的新功能小批量部署到生产环境中。您可以为部分用户打开和…

AI与无人驾驶汽车:如何通过机器学习提升自动驾驶系统的安全性?

引言 想象一下&#xff0c;在高速公路上&#xff0c;一辆无人驾驶汽车正平稳行驶。突然&#xff0c;前方的车辆紧急刹车&#xff0c;而旁边车道有一辆摩托车正快速接近。在这千钧一发的瞬间&#xff0c;自动驾驶系统迅速分析路况&#xff0c;判断最安全的避险方案&#xff0c;精…

【NLP 63、大模型应用 —— Agent】

人与人最大的差距就是勇气和执行力&#xff0c;也是唯一的差距 —— 25.4.16 一、Agent 相关工作 二、Agent 特点 核心特征&#xff1a; 1.专有场景&#xff08;针对某个垂直领域&#xff09; 2.保留记忆&#xff08;以一个特定顺序做一些特定任务&#xff0c;记忆当前任务的前…

RAGFlow本地部署教程 :多模态检索+动态生成,用AI重构企业知识生产力

RAGFlow是一款基于检索增强生成&#xff08;RAG&#xff09;技术的智能工作流平台&#xff0c;通过整合多源数据检索与生成式AI模型&#xff0c;优化企业知识管理、智能问答及自动化报告生成&#xff0c;核心功能包括&#xff1a; 多源数据融合&#xff1a;支持数据库、文档库、…

【C/C++】深入理解指针(二)

文章目录 深入理解指针(二)1.const修饰指针1.1 const修饰变量1.2 const修饰指针变量 2.野指针2.1 野指针成因1.指针未初始化2. 指针越界访问3.指针指向的空间释放 2.2 如何规避野指针2.2.1 指针初始化2.2.2 小心指针越界2.2.3 指针变量不再使⽤时&#xff0c;及时置NULL&#x…

【verilog】在同一个 always 块中写了多个“看起来独立”的 if / if-else,到底谁先谁后,怎么执行?会不会冲突?

&#x1f50d; 问题本质 在一个 always (posedge clk) 块中&#xff0c;所有的代码都是顺序执行的。但这不意味着它就像软件一样“一条一条执行”&#xff0c;因为最终是电路&#xff01;电路是并行存在的&#xff01; Verilog 是硬件描述语言&#xff08;HDL&#xff09;&am…

【React】什么是 Hook

useStateuseEffectuseRef 什么是hook&#xff1f;16.8版本出现的新特性。可以在不编写class组件的情况下使用state以及其它的React特性 为什么有hook&#xff1f;class组件很难提取公共的重用的代码&#xff0c;然后反复使用&#xff1b;不编写类组件也可以使用类组件的状态st…

如何查看自己抖音的IP属地?详细教程及如何修改

在当今互联网时代&#xff0c;IP属地信息已成为各大社交平台&#xff08;如抖音、微博、快手等&#xff09;展示用户真实网络位置的重要功能。以下是关于如何查看抖音IP属地的详细教程及常见问题解答&#xff0c;帮助您快速了解相关信息&#xff1a; 一、如何查看抖音账号的IP属…

深度学习算力革新:AI服务器在运维工作中的智能化实践

【导语】作为IT基础设施服务领域的从业者&#xff0c;我们在日常工作中发现&#xff0c;AI服务器的智能化运维能力正在重塑传统IDC的管理模式。本文将以DeepSeek系列服务器为例&#xff0c;分享智能算力设备在真实运维场景中的创新应用。 一、传统服务器集群的运维痛点 在数据…

安装部署RabbitMQ

一、RabbitMQ安装部署 1、下载epel源 2、安装RabbitMQ 3、启动RabbitMQ web管理界面 启用插件 rabbitmq数据目录 创建rabbitmq用户 设置为管理员角色 给用户赋予权限 4、访问rabbitmq

中间件--ClickHouse-4--向量化执行(什么是向量?为什么向量化执行的更快?)

1、向量&#xff08;Vector&#xff09;的概念 &#xff08;1&#xff09;、向量的定义 向量&#xff1a;在计算机科学中&#xff0c;向量是一组同类型数据的有序集合&#xff0c;例如一个包含多个数值的数组。在数据库中&#xff0c;向量通常指批量数据&#xff08;如一列数…

Python PDF 转 Markdown 工具库对比与推荐

根据最新评测及开源社区实践&#xff0c;以下为综合性能与适用场景的推荐方案&#xff1a; 1. ‌Marker‌ ‌特点‌&#xff1a; 转换速度快&#xff0c;支持表格、公式&#xff08;转为 LaTeX&#xff09;、图片提取&#xff0c;适配复杂排版文档‌。依赖 PyTorch&#xff0c…

Vue 和 Spring boot 和 Bean 不同生命周期

一、Vue 组件生命周期 父子组件生命周期顺序&#xff1a; 创建时&#xff1a; 父 beforeCreate → 父 created → 父 beforeMount → 子组件生命周期 → 父 mounted 更新时&#xff1a; 父 beforeUpdate → 子组件更新 → 父 updated。 销毁时&#xff1a; 父 beforeDestroy…

Microsoft Azure 基础知识简介

Microsoft Azure 基础知识简介 已完成100 XP 2 分钟 Microsoft Azure 是一个云计算平台&#xff0c;提供一系列不断扩展的服务&#xff0c;可帮助你构建解决方案来满足业务目标。 Azure 服务支持从简单到复杂的一切内容。 Azure 具有简单的 Web 服务&#xff0c;用于在云中托…

C语言链接数据库

目录 使用 yum 配置 mysqld 环境 查看 mysqld 服务的版本 创建 mysql 句柄 链接数据库 使用数据库 增加数据 修改数据 查询数据 获取查询结果的行数 获取查询结果的列数 获取查询结果的列名 获取查询结果所有数据 断开链接 C语言访问mysql数据库整体源码 通过…

【Maven】手动安装依赖到本地仓库

【Maven】手动安装依赖到本地仓库 【一】下载依赖【二】安装 JAR 文件到本地仓库【三】验证安装【四】在项目中使用该依赖【1】注意事项【2】额外提示 【一】下载依赖 登录到中央仓库下载依赖&#xff0c;中央仓库地址&#xff1a;https://mvnrepository.com/ 搜搜你的依赖的a…