问题描述
  小明喜欢在一个围棋网站上找别人在线对弈。这个网站上所有注册用户都有一个积分,代表他的围棋水平。

小明发现网站的自动对局系统在匹配对手时,只会将积分差恰好是K的两名用户匹配在一起。如果两人分差小于或大于K,系统都不会将他们匹配。

现在小明知道这个网站总共有N名用户,以及他们的积分分别是A1, A2, … AN。

小明想了解最多可能有多少名用户同时在线寻找对手,但是系统却一场对局都匹配不起来(任意两名用户积分差不等于K)?
输入格式
  第一行包含两个个整数N和K。
  第二行包含N个整数A1, A2, … AN。

对于30%的数据,1 <= N <= 10
  对于100%的数据,1 <= N <= 100000, 0 <= Ai <= 100000, 0 <= K <= 100000
输出格式
  一个整数,代表答案。
样例输入
10 0
1 4 2 8 5 7 1 4 2 8
样例输出
6

思路:
这题可以分两种情况讨论
k=0时,同分数的就可以匹配,所已只需求出所有用户中有多少种分数,即得到了答案。
k!=0时,我们就可以将可以匹配的分一组,求在这一组中最大的在线人数,然后将每一组的最大在线人数加起来,就得到了总的最大在线人数。
一组中的最大在线人数怎么求可以采用动态规划,
状态方程:dp[i] = Math.max(dp[i-1],dp[i-2]+group[i]) group[i]代表这一组中第i种分数的人数,dp[i]代表这一组中第i种分数的最大在线人数.

代码:

public class 对局匹配1 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int k = sc.nextInt();int[] arr = new int[100001];for (int i = 0; i < n; i++) {int score = sc.nextInt();arr[score] += 1;}int sum = 0;if (k == 0) {for (int i = 0; i < arr.length; i++) {if (arr[i] != 0) {sum += 1;}}} else { // 不等于0,采用分组求解int[] group = new int[arr.length]; // 存储一组中各个分数的人数int[] dp = new int[arr.length]; // 存储一组中各个分数的最大在线人数for (int j = 0; j < k; j++) { // 分k组int len = 1; // 当前组的人数for (int i = j; i < arr.length; i += k) { // 分组group[len++] = arr[i];}// 计算当前组的最大在线人数dp[0] = 0;dp[1] = group[1];for (int i = 2; i < len; i++) {dp[i] = Math.max(dp[i - 1], dp[i - 2] + group[i]);}// 累加各组的最大在线人数sum += dp[len - 1];}}System.out.println(sum);}
}

历届试题 对局匹配-动态规划相关推荐

  1. 【蓝桥杯】历届试题 对局匹配(C++)

    [蓝桥杯]历届试题 对局匹配(C++) 问题描述 解题思路 具体代码 问题描述 题目链接:对局匹配. 资源限制: 时间限制:1.0s 内存限制:256.0MB 问题描述: 小明喜欢在一个围棋网站上找别 ...

  2. 【蓝桥杯】历届试题 对局匹配(贪心)

    历届试题 对局匹配 问题描述 小明喜欢在一个围棋网站上找别人在线对弈.这个网站上所有注册用户都有一个积分,代表他的围棋水平. 小明发现网站的自动对局系统在匹配对手时,只会将积分差恰好是K的两名用户匹配 ...

  3. 蓝桥杯 java 历届试题 对局匹配

    历届试题 对局匹配 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 小明喜欢在一个围棋网站上找别人在线对弈.这个网站上所有注册用户都有一个积分,代表他的围棋水平. 小明发现网站的自动 ...

  4. 试题 历届试题 对局匹配(动态规划)保证简单

    问题描述 小明喜欢在一个围棋网站上找别人在线对弈.这个网站上所有注册用户都有一个积分,代表他的围棋水平. 小明发现网站的自动对局系统在匹配对手时,只会将积分差恰好是K的两名用户匹配在一起.如果两人分差 ...

  5. 试题 历届试题 对局匹配

    资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 小明喜欢在一个围棋网站上找别人在线对弈.这个网站上所有注册用户都有一个积分,代表他的围棋水平. 小明发现网站的自动对局系统在匹配对手时 ...

  6. 蓝桥杯---试题 历届试题 对局匹配

    资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 小明喜欢在一个围棋网站上找别人在线对弈.这个网站上所有注册用户都有一个积分,代表他的围棋水平. 小明发现网站的自动对局系统在匹配对手时 ...

  7. 蓝桥杯 历届试题 对局匹配

    问题描述 小明喜欢在一个围棋网站上找别人在线对弈.这个网站上所有注册用户都有一个积分,代表他的围棋水平. 小明发现网站的自动对局系统在匹配对手时,只会将积分差恰好是K的两名用户匹配在一起.如果两人分差 ...

  8. [蓝桥杯][历届试题 PREV-50]对局匹配(Java)(动态规划)

    历届试题 对局匹配 时间限制:1.0s   内存限制:256.0MB 问题描述 小明喜欢在一个围棋网站上找别人在线对弈.这个网站上所有注册用户都有一个积分,代表他的围棋水平. 小明发现网站的自动对局系 ...

  9. 2017蓝桥杯 对局匹配(贪心)

    历届试题 对局匹配 时间限制:1.0s 内存限制:256.0MB 问题描述 小明喜欢在一个围棋网站上找别人在线对弈.这个网站上所有注册用户都有一个积分,代表他的围棋水平. 小明发现网站的自动对局系统在 ...

最新文章

  1. Open3D KdTree建立、3种近邻搜索及结果可视化
  2. C#强化系列文章三:实验分析C#中三种计时器使用异同点
  3. 哈儿小波分解和重构(降维和升维)实现算法
  4. 目标检测发展路程(一)——Two stage
  5. 花生壳For Linux安装步骤
  6. oracle 索引 效果,Oracle中不使用索引和使用索引的效果比较分析
  7. 操作 神通数据库_神通数据库-快速入门指南 PDF 下载
  8. Java携带HTTP头信息下载网络图片
  9. DRAM知识整理系列(三):部分时序参数整理
  10. Linux系统装intel网卡,在Centos下安装intel网卡的方法
  11. 微信小程序动态加载组件
  12. OpenGL ES 简介
  13. 哈佛大学凌晨4点半的景象--哈佛图书馆的二十条训言
  14. 面试 | 铁憨憨程序员怎么写好简历?先把这个问题改掉先!
  15. 分布式存储系统Kudu(一)、核心原理
  16. 胡喜:我是如何从菜鸟做到架构师的
  17. 普渡大学计算机科学师生比,全美最强STEM大学排行榜出炉|这些学校竟然上榜了~...
  18. 【游戏提取/超详细记录向】关于unity游戏的资源提取所需资源及方法简介(AssetBundle及libil2cpp.so等解密)
  19. Java设计模式之 工厂模式(简单工厂模式)
  20. 博客记录之学习骏马金龙的网站

热门文章

  1. 《机器学习算法竞赛实践》学习笔记(3)竞赛概述问题建模
  2. pcb成型板aoi检测_【技术】7种PCB板常用检测方法
  3. 翻译要忠实于原文吗?
  4. 高压滑环与低压滑环的技术区别有哪些
  5. 如何在CSDN编辑器(Markdown编辑器)中输入数学符号
  6. Opencv鼠标响应(框选以及取点)
  7. 汉字编码转换原理及方法
  8. Hgame2023_Week2[crypto]
  9. 社群运营中好用的社群管理工具有什么推荐?
  10. 【Linux operation 30】SUSE 12SP5离线安装Containers 模块