问题 F: 分盒子
时间限制: 1 Sec 内存限制: 128 MB

[提交][状态][讨论版]
题目描述
国际妇女节马上就要到了!波利卡正在为假期做准备。

商店里有n个糖果盒出售。这个盒子里有糖果。

Polycarp希望为k个女孩准备最多的礼物。每一份礼物将由两个盒子组成。女孩们应该能够平等地分享每一份礼物,所以一份礼物(在一对盒子里)中的糖果总数应该能被k整除。换句话说,如果di+dj能被k整除,那么两个盒子i和j (i≠j)可以组合作为礼物。

Polycarp能提供多少个盒子?当然,每个盒子只能是一件礼物的一部分。Polycarp不能“部分”使用盒子,也不能在盒子之间重新分配糖果。

输入
输入的第一行包含两个整数n和k(1≤n≤2⋅105,1 ≤k≤110)——箱子数量和号码的女孩。

输入的第二行包含n个整数d1,d2,…,dn(1≤di≤109),其中di为第i个盒子中的糖果数量。

多组数据输入

输出
打印一个整数——Polycarp可以作为礼物赠送的盒子的最大数量。

样例输入
7 2
1 2 2 3 2 4 10
8 2
1 2 2 3 2 4 6 10
7 3
1 2 2 3 2 4 5
样例输出
6
8
4
提示

第一组可以选(2,3),(5,6),(1,4),可以使用6个盒子,所以答案为6
/*
之前做过 一个 统计 一个素数对和等于n 的素数对的个数 的题目,和这题有异曲同工之妙。

凑一对和为某个值的对数,就要像办法拆分分别统计可以凑成一对的单个元素的个数。
这题,要使一对和能整除k。
先对数据预处理,每个数对k取余以简化计算,取余的结果同数组mp数组统计个数。
最终只要统计的mp[i],mp[k-i]有值就来计算答案。
特别考虑mp[0],和 i==k-i 的情况
*/
ac_code:

#include <bits/stdc++.h>
using namespace std;
int mp[115];int main(){int n,k;while(~scanf("%d%d",&n,&k)){int x;memset(mp,0,sizeof(mp));for(int i = 0; i < n; i++){scanf("%d",&x);mp[x%k]++;}int ans = mp[0]/2;for(int i = 1; i <= k/2; i++){if(mp[i]&&mp[k-i]){if(i != k-i) ans += min(mp[i],mp[k-i]);else ans += mp[i]/2;}}printf("%d\n",ans*2);}return 0;}

问题 F: 分盒子(经典)相关推荐

  1. shell脚本 -d 是目录文件,那么-e,-f分别是什么?还有! -e这又是什么意思呢?

    shell脚本 -d 是目录文件,那么-e,-f分别是什么?还有"! -e"这又是什么意思呢? -e filename 如果 filename存在,则为真 -d filename ...

  2. 7-38 支票面额 (15 分) 一个采购员去银行兑换一张y元f分的支票,结果出纳员错给f元y分。采购员用去n分后发觉有错,余额有2y元2f分,问支票面额?PTA:中M2021春C、Java入门练习I

    7-38 支票面额 (15 分) 一个采购员去银行兑换一张y元f分的支票,结果出纳员错给了f元y分.采购员用去了n分之后才发觉有错,于是清点了余额尚有2y元2f分,问该支票面额是多少? 输入格式: 输 ...

  3. c语言里面%c什么作用,C语言里面,%d%c%f分别是什么意思?怎么用?

    这几个都是格式字符 在输出不同数据时要用不同的的格式字符%d是用来输出十进制整型数据的实际长度输出 %c是以字符形式输出,只输出一个字符 %f是以小数形式输出单.双精度度数,隐含输出6位小数 还有很多 ...

  4. 芯片检测(分治法经典问题)

    1. 问题描述 有一批芯片(n片),里面有好芯片有坏芯片,我们不知道哪片是好的哪片是坏的,只知道里面的好芯片一定比坏芯片至少多出一片. 现在有一个检测设备,同时将两片芯片放进去,它们会各自报告对方的情 ...

  5. 7-19 支票面额 (15 分) 一个采购员去银行兑换一张y元f分的支票,结果出纳员错给了f元y分。采购员用去了n分之后才发觉有错,于是清点了余额尚有2y元2f分,问该支票面额是多少?

    输入格式: 输入在一行中给出小于100的正整数n. 输出格式: 在一行中按格式y.f输出该支票的原始面额.如果无解,则输出No Solution. 输入样例1: 23 输出样例1: 25.51 输入样 ...

  6. 比较好的php源码,目前市面上能拿到的最好的PHP跑F分源码下载

    ■产品演示: 联系客服 ■产品介绍: 后台账户:admin 后台密码:123456前台地址:dl.xiandouer.com (如果已登陆后台,需要用其他浏览器才能打开前台) 前台账户:1301111 ...

  7. F - Oulipo(kmp经典模板题)!!!

    The French author Georges Perec (1936–1982) once wrote a book, La disparition, without the letter 'e ...

  8. C语言--分治法经典例题--循环日程安排问题

    问题描述: 有size=2^n个选手要进行网球循环赛,设计一个满足以下要求的比赛日程表.满足每个选手必须和其他n-1个选手各赛一次.每个选手每一天只能赛一次.循环赛在n-1天内结束. 解法: 这个图标 ...

  9. 经典算法研究系列:十、从头到尾彻底理解傅里叶变换算法、上

     经典算法研究系列:十.从头到尾彻底理解傅里叶变换算法.上 作者:July.dznlong   二零一一年二月二十日 推荐阅读:The Scientist and Engineer's Guide t ...

最新文章

  1. 超大磁盘分区工具parted使用介绍(一)
  2. 第1关:实现一个顺序存储的队列
  3. ASP.NET 5系列教程 (四):向视图中添加服务和发布应用到公有云
  4. Android之HTTP预备知识
  5. 自定义本地音乐播放器
  6. 关于Authorware的十二种使用技巧
  7. 高可用架构设计之道,实战案例直面流量洪峰
  8. 给Win7光盘添加PE3.0
  9. idea 无效的目标发行版_maven构建异常(无效的目标发行版: 1.8)
  10. cx_Oracle.DatabaseError: DPI-1047: 64-bit Oracle Client library cannot be loaded 解决方法
  11. 优秀程序员必须知道的八件事情
  12. 获得CPU利用率(python调用top命令实现)
  13. 解决git clone fatal: port 443: Timed out
  14. linux下迅雷的替代
  15. 手机cpu性能天梯图2022 手机cpu性能排行2022 手机cpu哪个好
  16. 深入剖析优惠券核心架构设计
  17. 乔布斯的创新之道:想象力是第一生产力
  18. 学习笔记 - 动态规划做题思路
  19. 执行update语句,用没用到索引,区别大吗?
  20. 路由软件安装使用(一)(bird)

热门文章

  1. 离散实验偏序关系满足实验报告C语言,离散数学实验三:偏序关系中盖住关系的求取及格论中有补格的判定...
  2. php有个qrcode类,一个PHP的QRcode类与大家分享
  3. 使用未初始化的内存是什么意思_单根内存条的极限容量是多少?内存条上的2R X 8代表了什么意思?...
  4. python 抛出异常_python 异常
  5. SparkSQL 将统计结果保存到Mysql
  6. 52个实用的数据可视化工具!
  7. 答应我,调试Python代码,不要再用Print了!
  8. 最搞笑的代码注释,你遇到过几个?
  9. 分享珍藏很久的Python学习知识手册
  10. 赞!Google 资深软件工程师 LeetCode 刷题笔记首次公开