当前位置: 首页 > wzjs >正文

苏州建站网站免费建站系统软件

苏州建站网站,免费建站系统软件,网络服务相关资料,百度搜索 网站介绍对局匹配 原题目链接 题目描述 小明喜欢在一个围棋网站上找别人在线对弈。这个网站上所有注册用户都有一个积分,代表他的围棋水平。 小明发现,网站的自动对局系统在匹配对手时,只会将积分差恰好是 K 的两名用户匹配在一起。如果两人分差小…

对局匹配

原题目链接

题目描述

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

小明发现,网站的自动对局系统在匹配对手时,只会将积分差恰好是 K 的两名用户匹配在一起。如果两人分差小于或大于 K,系统都不会将他们匹配。现在小明知道,这个网站总共有 N 名用户,以及他们的积分分别是 A₁, A₂, ..., Aₙ

小明想知道,最多可能有多少名用户同时在线寻找对手,但系统却一场对局都匹配不出来(即任意两名用户积分差不等于 K)?


输入描述

  • 第一行包含两个整数 NK
  • 第二行包含 N 个整数 A₁, A₂, ..., Aₙ,表示每位用户的积分。

数据范围

  • 1 ≤ N ≤ 10⁵
  • 0 ≤ Aᵢ ≤ 10⁵
  • 0 ≤ K ≤ 10⁵

输出描述

输出一个整数,表示最多有多少名用户无法被匹配(任意两名用户积分差不为 K)。


输入样例

10 0
1 4 2 8 5 7 1 4 2 8

输出样例

6

c++代码

#include<bits/stdc++.h>using namespace std;int main() {int N, K, a, ans = 0;cin >> N >> K;vector<vector<int>> arr(K);vector<int> mid, mp(100005);for (int i = 0; i < N; i++) cin >> a, mid.push_back(a), mp[a]++;if (K == 0) {for (int i = 0; i <= 100004; i++) {if (mp[i] > 0) ans++;}cout << ans;return 0;}sort(mid.begin(), mid.end());for (int i = 0; i < N; i++) {if (arr[mid[i] % K].size() == 0 || arr[mid[i] % K].back() != mid[i] ) arr[mid[i] % K].push_back(mid[i]);}for (int i = 0; i < K; i++) {if (arr[i].size() == 0) continue;vector<int> dp(arr[i].size());dp[0] = mp[arr[i][0]];for (int j = 1; j < arr[i].size(); j++) {int b = j - 2 >= 0 ? dp[j - 2] : 0;if (arr[i][j] - arr[i][j - 1] == K) dp[j] = max(b + mp[arr[i][j]], dp[j - 1]);else dp[j] = dp[j - 1] + mp[arr[i][j]];}ans += dp[arr[i].size() - 1];}cout <<ans;return 0;
}//by wqs

题目解析

如果 k = 0,那么只用考虑总过出现了多少不同积分的用户数,因为相同积分的用户只能上线一个。

if (K == 0) {for (int i = 0; i <= 100004; i++) {if (mp[i] > 0) ans++;}cout << ans;return 0;
}

如果 k > 0,假设当前用户积分为 x,则他能影响到的用户积分为 x + k 和 x - k,又会因为积分为 x + k 用户在线与否间接地影响到 x + 2k…可以发现积分对 k 求余相同的用户可能会互相影响。如果积分对k 求余不相同,一点不会相互影响。

因此我们可以根据每个用户积分对 k 求余的结果分成余数为 0 ~ k - 1 的组,共 k 组。此时我们只要解决每一组的最多在线人数最后求和即可注意每一分组为了方便都从小到大排序。去重,出现次数用哈希表统计。

vector<vector<int>> arr(K);
for (int i = 0; i < N; i++) cin >> a, mid.push_back(a), mp[a]++;
sort(mid.begin(), mid.end());
for (int i = 0; i < N; i++) {if (arr[mid[i] % K].size() == 0 || arr[mid[i] % K].back() != mid[i] ) arr[mid[i] % K].push_back(mid[i]);
}
dp[i]表示当前分组前i个分最多可以选择多少人
首先第i个分不会与第i - 2,i - 3,i - 4个分矛盾,因为i与i - 1起码差K,i - 1与i - 2起码差K,所以i与i - 2起码差2 * K;
如果第i个分与第i - 1个分之差不为K,说明i个分与第i - 1个分不矛盾,他跟第i - 2,i - 3,i - 4个分也不矛盾,我们肯定要选上第i个分
dp[i] = dp[i - 1] + 第i个分的人数
如果第i个分与第i - 1个分之差为K,说明i个分与第i - 1个分矛盾,他跟第i - 2,i - 3,i - 4个分不矛盾,我们可以选择第i个分不选第i - 1个分
dp[i] = dp[i - 2] + 第i个分的人数;
我们也可以选择第i - 1个分不选第i个分;
dp[i] = dp[i - 1];
我们取最大值
dp[i] = max(dp[i - 2] + 第i个分的人数, dp[i - 1]);
vector<int> dp(arr[i].size());
dp[0] = mp[arr[i][0]];
for (int j = 1; j < arr[i].size(); j++) {int b = j - 2 >= 0 ? dp[j - 2] : 0;if (arr[i][j] - arr[i][j - 1] == K) dp[j] = max(b + mp[arr[i][j]], dp[j - 1]);else dp[j] = dp[j - 1] + mp[arr[i][j]];
}

对于每一分组,用ans累加就行

ans += dp[arr[i].size() - 1];

文章转载自:

http://31LgcGtA.ckmcp.cn
http://726kkT0b.ckmcp.cn
http://fCGUcfRW.ckmcp.cn
http://jIwEBsBj.ckmcp.cn
http://vgU7qGYc.ckmcp.cn
http://cd9T28bw.ckmcp.cn
http://wYSDsHed.ckmcp.cn
http://1Yb8LPlx.ckmcp.cn
http://qAcBeyUV.ckmcp.cn
http://XF1o44gh.ckmcp.cn
http://5Ov9UGtC.ckmcp.cn
http://uswrwuTv.ckmcp.cn
http://zdmQPx3Q.ckmcp.cn
http://N5Zch8SK.ckmcp.cn
http://5UyNbBy7.ckmcp.cn
http://Efw4usH1.ckmcp.cn
http://mp2lCmSM.ckmcp.cn
http://K2UX7RKN.ckmcp.cn
http://GtUemOjb.ckmcp.cn
http://b6FZJBoU.ckmcp.cn
http://vU54Afw5.ckmcp.cn
http://uNhsdQKF.ckmcp.cn
http://DPgtKTz6.ckmcp.cn
http://fQUWwxEf.ckmcp.cn
http://ARTOVZ7a.ckmcp.cn
http://IVbkJfGP.ckmcp.cn
http://FSQj7mTF.ckmcp.cn
http://kD1KXeof.ckmcp.cn
http://JOO0mpyf.ckmcp.cn
http://pSta7P6k.ckmcp.cn
http://www.dtcms.com/wzjs/704910.html

相关文章:

  • 哈尔滨精品建站湖南建设银行宣传部网站
  • 一个企业网站文章多少适合公司制做网站
  • 网站推广含义致力于网站开发维护学什么专业
  • 印后设备网站建设网站代理软件
  • 两个彩票网站做赔付网站开发流程的三个部分
  • 加强文明网站建设诊所网站模板
  • 机关网站建设总结wordpress搭建实时聊天网站
  • net 网站开发室内设计方案ppt作业
  • 做紧固件上什么网站哪有免费的网站建设模板
  • 做商城网站公司吗为什么菜市场不可以做网站
  • 音乐网站开发背景深圳网站建设服务公司
  • 办网站流程wordpress首页添加图片不显示图片
  • 营销型网站建设的一般过程包括哪些环节?淄博手机网站开发公司
  • 网站开发招标评分标准找工程项目上哪个平台好呢
  • wordpress建站简单吗wordpress怎么完成
  • 网站建设后台有哪些项目产品宣传册模板免费
  • 做的比较好看的国内网站网站建设费应计入什么科目
  • 怎么用wordpress建电商网站上海网页制作费用
  • 用织梦做网站网上做分销代销哪个网站好
  • 网站建设年费旅游网站建设 pig
  • 长春专业网站制作公司福州优化广告公司
  • 公司网站建设小江上海网站制作平台
  • 广州市服务好的网站制作排名网络事件营销
  • 网站编程软件有哪些怎样建设学校网站首页
  • 手机怎么搭建属于自己的网站中国工商银行app下载
  • 张家港城市建设规划局网站上海网页制作设计营销
  • 深圳电器网站建设全国私人订制平台
  • 聊城市东昌府区建设路小学网站网站设计常见流程
  • 网站建设和电子商务的关系在阿里巴巴上做网站需要什么条件
  • 快速做网站的技术成都企业网站模板建设