对局匹配

8023spz 2021-08-31 原文


对局匹配


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

  小明发现网站的自动对局系统在匹配对手时,只会将积分差恰好是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为差值,所有的等差数列进行划分,各自求出所能容纳的最多不匹配的个数,然后加起来即可。
代码:
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <set>
#include <algorithm>
using namespace std;
int dp[100001][2];
int n,k,c,d,ans;
int main() {
    scanf("%d %d",&n,&k);
    for(int i = 0;i < n;i ++) {
        scanf("%d",&d);
        if(dp[d][1] ++ == 0) c ++;
    }
    if(!k) printf("%d",c);
    else {
        for(int i = 0;i < k;i ++) {
            for(int j = 100000 - i - k;j >= 0;j -= k) {
                dp[j][0] = max(dp[j + k][0],dp[j + k][1]);
                dp[j][1] += dp[j + k][0];
            }
            ans += max(dp[(100000 - i) % k][0],dp[(100000 - i) % k][1]);
        }
        printf("%d",ans);
    }
}

 

发表于
2019-04-14 15:44 
给杰瑞一块奶酪~ 
阅读(247
评论(0
编辑 
收藏 
举报

 

版权声明:本文为8023spz原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/8023spz/p/9068087.html

对局匹配的更多相关文章

随机推荐

  1. PCI1255信号采集板卡的干扰来源和解决办法

      今天运动控制卡与信号采集板卡联调,发现只要启动运动控制器,PCI1255的信号采集卡就出现干扰,下面是尝试 […]...

  2. 锤子便签V2.5产品体验报告

    前言 笔者对互联网产品很感兴趣,但属小白玩家。如果各位前辈有兴致请看一下,恭候指教。     体验环境   体 […]...

  3. 微信支付之扫码、APP、小程序支付接入详解

    做电商平台的小伙伴都知道,支付服务是必不可少的一部分,今天我们开始就说说支付服务的接入及实现。目前在国内,几乎 […]...

  4. 网络-路由交换-IPv4-Cisco-协议概要

    IPv4 1、RIP            版本:V1,V2版本配置不同不能收发路由更新。           […]...

  5. 一个监控平台管理软件的需求

    (一)软件设计要求: 1、应用软件应采用模块化的体系结构,以便于系统的维护和扩展; 2、应用软件应能根据应用需 […]...

  6. 网络协议 4 – 交换机与 VLAN:办公室太复杂,我要回学校

        上一次,我们通过宿舍联网打魔兽的需求,认识了如何通过物理层和链路层组建一个宿舍局域网。今天,让我们切换 […]...

  7. asp.net core 自定义基于 HttpContext 的 Serilog Enricher

    asp.net core 自定义基于 HttpContext 的 Serilog Enricher Intro […]...

  8. Linux USB 3.0驱动分析(一)—— USB设备基础概念

    一.基础概念 在终端用户看来,USB设备为主机提供了多种多样的附加功能,如文件传输,声音播放等,但对USB主机 […]...

展开目录

目录导航