华为OD机试-最佳对手-2022Q4 A卷-Py/Java/JS

news/2024/11/28 0:51:12/

游戏里面,队伍通过匹配实力相近的对手进行对战。但是如果匹配的队伍实力相差太大,对于双方游戏体验都不会太好。
给定n个队伍的实力值,对其进行两两实力匹配,两支队伍实例差距在允许的最大差距d内,则可以匹配。要求在匹配队伍最多的情况下匹配出的各组实力差距的总和最小。

输入描述
第一行两个整数,n,d。队伍个数n。允许的最大实力差距d。
2<=n <=50
0<=d<=100

第二行,n个整数,表示队伍的实力值,以空格分割。
0<=各队伍实力值<=100

输出描述
输出一个整数,表示各组对战的实力差值的总和。若没有队伍可以匹配,则输出-1。

示例1:输入输出示例仅供调试,后台判题数据一般不包含示例

输入

6 30 
81 87 47 59 81 18

输出

57

示例2:输入输出示例仅供调试,后台判题数据一般不包含示例

输入

6 20 
81 87 47 59 81 18

输出

12

示例3:输入输出示例仅供调试,后台判题数据一般不包含示例

输入

4 10

40 51 62 73 

输出

-1

Java 代码

import java.util.Scanner;
import java.util.*;
import java.util.stream.Collectors;
import java.math.BigInteger;
import java.util.stream.Stream;class Main {public static void main(String[] args) {// 处理输入Scanner in = new Scanner(System.in);// 处理输入int n = in.nextInt();int d = in.nextInt();int[] data = new int[n];for(int i = 0;i<n;i++){data[i] = in.nextInt();}// 按照大小排序Arrays.sort(data);//pair个数int[] dp1 = new int[n+1];//最小和int[] dp2 = new int[n+1];for (int i=2;i<n+1;i++){int tmp = 0;if (data[i-1] - data[i-2] <= d)tmp += 1;if (dp1[i-2]+tmp>dp1[i-1]){dp1[i] = dp1[i-2] + tmp;dp2[i] = dp2[i-2] + data[i-1] - data[i-2];}else if (dp1[i-2]+tmp<dp1[i-1]){dp1[i] = dp1[i-1];dp2[i] = dp2[i-1];}else{if (tmp == 1)dp2[i] = Math.min(dp2[i-1], dp2[i-2]+data[i-1]-data[i-2]);elsedp2[i] = Math.min(dp2[i-1], dp2[i-2]);dp1[i] = dp1[i-1];}}if (dp1[n] == 0)System.out.println(-1);elseSystem.out.println(dp2[n]);}}

Python代码

import functools# 读取第一行的n
# 处理输入
params = [int(x) for x in input().split(" ")]
n = params[0]
target = params[1]
data = [int(x) for x in input().split(" ")]data.sort()dp1 = [0]*(n+1) #pair个数
dp2 = [0]*(n+1) #最小和for i in range(2,n+1):tmp = 0if data[i-1] - data[i-2] <= target:tmp += 1if dp1[i-2]+tmp>dp1[i-1]:dp1[i] = dp1[i-2] + tmpdp2[i] = dp2[i-2] + data[i-1] - data[i-2]elif dp1[i-2]+tmp<dp1[i-1]:dp1[i] = dp1[i-1]dp2[i] = dp2[i-1]else:if tmp == 1:dp2[i] = min(dp2[i-1], dp2[i-2]+data[i-1]-data[i-2])else:dp2[i] = min(dp2[i-1], dp2[i-2])dp1[i] = dp1[i-1]if dp1[n] == 0:print(-1)
else:print(dp2[n])

JS代码

function main(n, target, data) {data.sort(function(a, b) {return a-b})let dp1 = new Array(n+1).fill(0)//pair个数let dp2 = new Array(n+1).fill(0) //最小和for (let i=2;i<n+1;i++){let tmp = 0if (data[i-1] - data[i-2] <= target)tmp += 1if (dp1[i-2]+tmp>dp1[i-1]) {dp1[i] = dp1[i-2] + tmpdp2[i] = dp2[i-2] + data[i-1] - data[i-2]}else if (dp1[i-2]+tmp<dp1[i-1]) {dp1[i] = dp1[i-1]dp2[i] = dp2[i-1]}else{if (tmp == 1)dp2[i] = Math.min(dp2[i-1], dp2[i-2]+data[i-1]-data[i-2])elsedp2[i] = Math.min(dp2[i-1], dp2[i-2])dp1[i] = dp1[i-1]}}if (dp1[n] == 0)console.log(-1)elseconsole.log(dp2[n])
}main(6, 30,[81, 87, 47, 59, 81, 18])


http://www.ppmy.cn/news/39303.html

相关文章

(邱维声)高等代数课程笔记:行列式的性质

行列式的性质 例题 1&#xff1a; ∣a11a12a21a22∣a11a22−a12a21,∣a11a21a12a22∣a11a22−a21a12.\left|\begin{matrix} a_{11} &a_{12}\\ a_{21} &a_{22} \end{matrix}\right| a_{11}a_{22} - a_{12}a_{21},~ \left|\begin{matrix} a_{11} &a_{21}\\ a_{12} …

新加坡电商系统上线指南

如果您正在考虑在新加坡开展电子商务业务并准备上线您的电商网站&#xff0c;以下是一些指南和建议&#xff0c;可以帮助您成功地启动和运营您的电商业务&#xff1a; 确认您的业务模式和目标市场。在上线之前&#xff0c;您需要确定您的业务模式&#xff0c;例如是B2B&#xf…

私有化部署的企业级业务编排引擎,jvs-逻辑引擎

在当下的智能化时代&#xff0c;企业级的IT系统如果继续按照传统的开发&#xff0c;那么不仅耗时耗力&#xff0c;最后还往往无法获得良好的结果。那么我先确定企业级的业务系统配置化的目标是什么&#xff1a; 降低人工操作成本&#xff1a;通过配置来自动化业务处理流程&…

自己曾经的C++笔记【在c盘爆满的时候找到的回忆】

文章目录**C与C的区别** (二&#xff09;类和对象构造函数和析构函数C特殊成员C友元C类的继承C虚函数和多态C模板C可变参模板CSTL容器篇C迭代器C仿函数C函数适配器CSTL算法C智能指针C类型推断CIO流C正则表达式具有特殊意义的元字符量词元字符校验数字的表达式校验字符的表达式特…

static 修饰方法

1、static修饰的方法叫做静态方法、类方法&#xff0c;可以通过类名直接访问&#xff0c;因为加上static&#xff0c;在类加载的时候首先被加载&#xff0c;不需要“”注入“”&#xff0c;而不加static&#xff0c;则需要“”注入“” 2、加了static&#xff0c;则在使用时不…

【Python】九十条简单py技巧打包(仅此一次哦)

文章目录前言一、编码原则二、编程惯用法三、编程惯用法四、库的使用五、设计模式五、内部机制六 使用工具辅助项目开发七 性能剖析与优化总结前言 九十条python实用技巧大总结&#xff0c;现在就开始咯&#xff01; 一、编码原则 建议1&#xff1a;理解 Pythonic 概念—-详…

超详细从0到1快速搭建SpringMVC开发环境

目录 1、搭建环境 1、Maven项目&#xff0c;添加web模块 2、设置子模块的打包方式为&#xff0c;打war包并引入依赖 2、注册Spring前端控制器 2.1、默认配置方式&#xff08;弃用&#xff09; 2.2、扩展配置方式&#xff08;推荐&#xff09; 3、创建请求控制器 4、配置…

从零开始实现一个C++高性能服务器框架----序列化模块

此项目是根据sylar框架实现&#xff0c;是从零开始重写sylar&#xff0c;也是对sylar丰富与完善 项目地址&#xff1a;https://gitee.com/lzhiqiang1999/server-framework 简介 项目介绍&#xff1a;实现了一个基于协程的服务器框架&#xff0c;支持多线程、多协程协同调度&am…