题目描述

小明喜欢在一个围棋网站上找别人在线对弈。这个网站上所有注册用户都有一个积分,代表他的围棋水平。
小明发现网站的自动对局系统在匹配对手时,只会将积分差恰好是K的两名用户匹配在一起。如果两人分差小于或大于K,系统都不会将他们匹配。
现在小明知道这个网站总共有N名用户,以及他们的积分分别是A1, A2, … AN。
小明想了解最多可能有多少名用户同时在线寻找对手,但是系统却一场对局都匹配不起来(任意两名用户积分差不等于K)?

题解:

我们可以按照要求将分数分成不同组,同组内的数据相邻元素差值为k。例如样例2

10 1
2 1 1 1 1 4 4 3 4 4

我们可以分出一组(1,2,3,4)
这样的目的是为了便于选取,因为相邻元素差值为k,所以我们就可以进行跳跃式选取,也就是如果当前决定第i位的值,我们可以选择选取第i位,这样就从第i-2位的情况加上第i位的情况,也可以不选,这样答案就是继承第i-1位,那当前,这样就成了dp问题
dp(i)=max{dp(i−1),dp(i−2)+ai}
我们将原数据可以分为好几组,求出每组的最大值,然后最后累加即可
这是一个很巧妙的思维,可以慢慢理解

代码:

/*
10 2
2 1 1 1 1 4 4 3 4 4
0 2 4
1 3
*/
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+8;
const int MAX=100000;
int cnt[maxn];
int val[maxn];
int dp[maxn];
int main(){int n,k;cin>>n>>k;int ans=0;for(int i=1;i<=n;i++){int x;cin>>x;cnt[x]++;}if(k==0){for(int i=0;i<=MAX;i++){if(cnt[i])ans++;}}else {for(int i=0;i<k;i++){int sum=0;for(int j=i;j<=MAX;j+=k){val[sum++]=cnt[j];}dp[0]=val[0];dp[1]=max(val[1],dp[0]);for(int j=2;j<sum;j++){dp[j]=max(dp[j-2]+val[j],dp[j-1]);}ans+=dp[sum-1];}}cout<<ans<<endl;return 0;
}

[蓝桥杯][2017年第八届真题]对局匹配相关推荐

  1. c语言存储对局信息,[蓝桥杯][2017年第八届真题]对局匹配 (C语言代码)

    解题思路:   这道题要求找出最大同时在线但不能匹配对局的用户数,我用的思路是动态规划,因为每两个相邻为K的用户都可以匹配,如果直接暴力搜索会出现牵一动百的情况,下面我来说一下我的思路: 数据存储方式 ...

  2. 蓝桥杯2017年第八届真题-对局匹配

    题目 题目链接 题解 动态规划. 题目大意: 在一个具有nnn个元素的集合中选取尽可能多的数,保证这些数不存在两个数相差为kkk,求个数. (题目讲的乱七八糟) 首先,我们统计每个数的个数,c[i]表 ...

  3. [蓝桥杯][2017年第八届真题]包子凑数(解题报告)

    问题 1886: [蓝桥杯][2017年第八届真题]包子凑数 时间限制: 1Sec 内存限制: 128MB 提交: 406 解决: 118 题目描述 小明几乎每天早晨都会在一家包子铺吃早餐.他发现这家 ...

  4. 题目 1886: 蓝桥杯2017年第八届真题-包子凑数

    时间限制: 1Sec 内存限制: 128MB 提交: 2378 解决: 789 题目描述 小明几乎每天早晨都会在一家包子铺吃早餐.他发现这家包子铺有N种蒸笼,其中第i种蒸笼恰好能放Ai个包子.每种蒸笼 ...

  5. 题目 1878: 蓝桥杯2017年第八届真题-青蛙跳杯子

    题目 X星球的流行宠物是青蛙,一般有两种颜色:白色和黑色. X星球的居民喜欢把它们放在一排茶杯里,这样可以观察它们跳来跳去. 如下图,有一排杯子,左边的一个是空着的,右边的杯子,每个里边有一只青蛙. ...

  6. [蓝桥杯][2017年第八届真题]小计算器(模拟)

    题目描述 模拟程序型计算器,依次输入指令,可能包含的指令有 数字:'NUM X',X为一个只包含大写字母和数字的字符串,表示一个当前进制的数 运算指令:'ADD','SUB','MUL','DIV', ...

  7. [蓝桥杯][2017年第八届真题]小数第n位(数学)

    题目描述 我们知道,整数做除法时,有时得到有限小数,有时得到无限循环小数. 如果我们把有限小数的末尾加上无限多个0,它们就有了统一的形式. 本题的任务是:在上面的约定下,求整数除法小数点后的第n位开始 ...

  8. 题目 1885: [蓝桥杯][2017年第八届真题]分巧克力+二分

    题目: 题目描述 儿童节那天有K位小朋友到小明家做客.小明拿出了珍藏的巧克力招待小朋友们. 小明一共有N块巧克力,其中第i块是Hi x Wi的方格组成的长方形. 为了公平起见,小明需要从这 N 块巧克 ...

  9. [蓝桥杯][2017年第八届真题]合根植物

    题目描述 w星球的一个种植园,被分成 m * n 个小格子(东西方向m行,南北方向n列).每个格子里种了一株合根植物. 这种植物有个特点,它的根可能会沿着南北或东西方向伸展,从而与另一个格子的植物合成 ...

最新文章

  1. 入门指南目录页 -PaddlePaddle 飞桨 入门指南 FAQ合集-深度学习问题
  2. pytho作线性拟合、多项式拟合、对数拟合
  3. JAVA 的 Date、Calendar的常用用法
  4. 美赛建模需要matlab吗,美赛(matlab自学)之微分方程建模
  5. wordpress插件_8个虚拟教室的必备WordPress插件
  6. grappelli美化Django Admin
  7. 解析卷积神经网络学习笔记——魏秀参
  8. .net framework 3.5win10无法安装,一招解决win10无法安装.NET Framework 3.5
  9. 浏览器兼容性测试工具
  10. 无法安装驱动程序此计算机上不存在,在win7中安装打印机时,如果“找不到打印机驱动程序包所需的核心驱动程序包”怎么办?...
  11. 【线性代数】上三角矩阵/下三角矩阵
  12. 数据库之关系模型介绍
  13. 二零零七年五一节自驾游记(十)--------0501若尔盖花湖II
  14. 基于CNN的表情识别(FER)pytorch实现
  15. 修改yum源为国内yum源和本地yum源
  16. PersistenceContext.properties()
  17. 太为难我了,阿里面试了7轮...
  18. XTU oj 1309唯一的子串
  19. 垃圾分类查询小程序(可回收物、有害垃圾、干垃圾、湿垃圾)
  20. Qt:QDialog 界面美化

热门文章

  1. 宇宙十大不为人知的事情
  2. mysql8 修改权限_MySQL8修改重置root密码,远程连接权限设置
  3. php如果字符串有1 3 5,PHP常用字符串函数小结
  4. 仓库每天的账怎样做_新年第一站,济南:仓储匠人仓库问题解决与实战力培训...
  5. C语言阿斯码,木叶四位上忍设定各不相同,网红负责秀操作,她只需要美就够了...
  6. php 单例模式的类,用单例模式来设计一个PHP数据库类
  7. textjoin去重_SuperJoinText这个函数,弥补了TEXTJOIN的缺憾
  8. .md是什么文件_Element-UI源码阅读之md显示到页面
  9. office连接oracle,Access(VBA)连接Oracle数据库的代码
  10. db2 删除存储过程_蚂蚁金服OceanBase挑战TPCC | TPCC基准测试之存储优化