历届试题 对局匹配-动态规划
问题描述
小明喜欢在一个围棋网站上找别人在线对弈。这个网站上所有注册用户都有一个积分,代表他的围棋水平。
小明发现网站的自动对局系统在匹配对手时,只会将积分差恰好是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);}
}
历届试题 对局匹配-动态规划相关推荐
- 【蓝桥杯】历届试题 对局匹配(C++)
[蓝桥杯]历届试题 对局匹配(C++) 问题描述 解题思路 具体代码 问题描述 题目链接:对局匹配. 资源限制: 时间限制:1.0s 内存限制:256.0MB 问题描述: 小明喜欢在一个围棋网站上找别 ...
- 【蓝桥杯】历届试题 对局匹配(贪心)
历届试题 对局匹配 问题描述 小明喜欢在一个围棋网站上找别人在线对弈.这个网站上所有注册用户都有一个积分,代表他的围棋水平. 小明发现网站的自动对局系统在匹配对手时,只会将积分差恰好是K的两名用户匹配 ...
- 蓝桥杯 java 历届试题 对局匹配
历届试题 对局匹配 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 小明喜欢在一个围棋网站上找别人在线对弈.这个网站上所有注册用户都有一个积分,代表他的围棋水平. 小明发现网站的自动 ...
- 试题 历届试题 对局匹配(动态规划)保证简单
问题描述 小明喜欢在一个围棋网站上找别人在线对弈.这个网站上所有注册用户都有一个积分,代表他的围棋水平. 小明发现网站的自动对局系统在匹配对手时,只会将积分差恰好是K的两名用户匹配在一起.如果两人分差 ...
- 试题 历届试题 对局匹配
资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 小明喜欢在一个围棋网站上找别人在线对弈.这个网站上所有注册用户都有一个积分,代表他的围棋水平. 小明发现网站的自动对局系统在匹配对手时 ...
- 蓝桥杯---试题 历届试题 对局匹配
资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 小明喜欢在一个围棋网站上找别人在线对弈.这个网站上所有注册用户都有一个积分,代表他的围棋水平. 小明发现网站的自动对局系统在匹配对手时 ...
- 蓝桥杯 历届试题 对局匹配
问题描述 小明喜欢在一个围棋网站上找别人在线对弈.这个网站上所有注册用户都有一个积分,代表他的围棋水平. 小明发现网站的自动对局系统在匹配对手时,只会将积分差恰好是K的两名用户匹配在一起.如果两人分差 ...
- [蓝桥杯][历届试题 PREV-50]对局匹配(Java)(动态规划)
历届试题 对局匹配 时间限制:1.0s 内存限制:256.0MB 问题描述 小明喜欢在一个围棋网站上找别人在线对弈.这个网站上所有注册用户都有一个积分,代表他的围棋水平. 小明发现网站的自动对局系 ...
- 2017蓝桥杯 对局匹配(贪心)
历届试题 对局匹配 时间限制:1.0s 内存限制:256.0MB 问题描述 小明喜欢在一个围棋网站上找别人在线对弈.这个网站上所有注册用户都有一个积分,代表他的围棋水平. 小明发现网站的自动对局系统在 ...
最新文章
- Open3D KdTree建立、3种近邻搜索及结果可视化
- C#强化系列文章三:实验分析C#中三种计时器使用异同点
- 哈儿小波分解和重构(降维和升维)实现算法
- 目标检测发展路程(一)——Two stage
- 花生壳For Linux安装步骤
- oracle 索引 效果,Oracle中不使用索引和使用索引的效果比较分析
- 操作 神通数据库_神通数据库-快速入门指南 PDF 下载
- Java携带HTTP头信息下载网络图片
- DRAM知识整理系列(三):部分时序参数整理
- Linux系统装intel网卡,在Centos下安装intel网卡的方法
- 微信小程序动态加载组件
- OpenGL ES 简介
- 哈佛大学凌晨4点半的景象--哈佛图书馆的二十条训言
- 面试 | 铁憨憨程序员怎么写好简历?先把这个问题改掉先!
- 分布式存储系统Kudu(一)、核心原理
- 胡喜:我是如何从菜鸟做到架构师的
- 普渡大学计算机科学师生比,全美最强STEM大学排行榜出炉|这些学校竟然上榜了~...
- 【游戏提取/超详细记录向】关于unity游戏的资源提取所需资源及方法简介(AssetBundle及libil2cpp.so等解密)
- Java设计模式之 工厂模式(简单工厂模式)
- 博客记录之学习骏马金龙的网站