首页 > 试题广场 >

小红的整数配对

[编程题]小红的整数配对
  • 热度指数:2845 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\hspace{15pt}小红拥有一个长度为 n 的整数数组 \{a_1,a_2,\dots,a_n\},初始得分为 0
\hspace{15pt}她可以多次执行如下操作,顺序不限、次数不限,直到无法继续:
\hspace{23pt}\bullet\, 任选两个尚未被选过的下标 i\neq j
\hspace{23pt}\bullet\, 若满足 |a_i-a_j|\leqq k,则将这两个数配成一对,并获得分数 a_i\times a_j;否则该对无法选取;
\hspace{23pt}\bullet\, 被配对的两个数随即从数组中移除,之后不可再次使用。

\hspace{15pt}请你帮助小红最大化最终得分,并输出这个最大分数。

输入描述:
\hspace{15pt}在一行上输入两个整数 n,k\left(1\leqq n,k\leqq 10^5\right)
\hspace{15pt}在第二行输入 n 个整数 a_1,a_2,\dots,a_n\left(1\leqq a_i\leqq 10^5\right)


输出描述:
\hspace{15pt}输出一个整数,表示通过最优配对操作后小红能够获得的最大得分。
示例1

输入

6 2
1 1 4 5 1 4

输出

21

说明

\hspace{15pt}一种可行的最优方案如下:
\hspace{23pt}\bullet\, 选择 11,得分 1\times1=1
\hspace{23pt}\bullet\, 选择 45,得分 4\times5=20
\hspace{15pt}最终总得分为 1+20=21
头像 BraveCoder
发表于 2025-09-04 20:54:33
import java.util.*; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in. 展开全文
头像 Silencer76
发表于 2025-08-09 18:40:37
题目链接 小红的整数配对 题目描述 小红有一个长度为 的整数数组 。她可以执行多次操作来将数组中的数两两配对。 配对规则:选择两个尚未被选过的数 和 ,如果它们满足 ,则可以配对。 得分规则:每成功配对一对,她就可以获得 的分数。 配对后的数将被移除,不能再次使用。 目标是帮助小红找到一种 展开全文
头像 lahm66
发表于 2025-09-30 19:58:24
贪心注意数字范围,使用long。题目范围没给清楚 import java.util.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { 展开全文
头像 学习小生
发表于 2025-09-06 22:51:55
n, k = map(int,input().split()) arr = list(map(int,input().split())) sort_arr = sorted(arr,reverse=True) i = 0 j = 1 visited = set() score = 0 while i 展开全文
头像 丨阿伟丨
发表于 2025-08-28 10:26:27
题目链接 小红的整数配对 题目描述 小红有一个包含 个整数的数组 。她可以进行多次配对操作来获得分数。 操作规则如下: 选择两个尚未被选过的数 和 。 如果它们的绝对值之差不大于 ,即 ,则配对成功。 配对成功后,获得 的分数,并且这两个数被移除,不能再次使用。 目标是最大化总得分。 解题 展开全文
头像 zqf201904091520224
发表于 2025-09-03 16:33:05
n, k = map(int, input().split()) a = list(map(int,input().split())) a.sort(reverse = True) sum = 0 i = 0 while i < n-1: if a[i]- a[i+1]<=k: 展开全文
头像 1900201910072158499
发表于 2025-08-26 20:44:52
import java.util.ArrayList; import java.util.Collections; import java.util.Scanner; import java.util.Arrays; public class Main { public static vo 展开全文
头像 niuke9999
发表于 2025-11-09 09:44:48
#include <stdio.h> #include <stdlib.h> int compare(const void*a, const void*b){ return(*(int*)a - *(int*)b); } int main(void) { 展开全文
头像 自由的风0450
发表于 2025-12-09 16:53:21
从大到小排序,积分最大 #include <iostream> #include<vector> #include<algorithm> using namespace std; int main() { ios::sync_with_stdio(fal 展开全文
头像 湮雨
发表于 2025-09-23 10:05:52
#include <algorithm> #include <iostream> #include <vector> using namespace std; int main() { int n,k; cin>>n>>k 展开全文