秋招模拟赛第29场|携程实习|2023.05.25
- Status
- Done
- Rule
- IOI
- Problem
- 3
- Start at
- 2023-6-19 19:00
- End at
- 2023-6-19 20:30
- Duration
- 1.5 hour(s)
- Host
- Partic.
- 11
You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.
小红最近闲来没事,于是他报名了高级软考,但是高级软考难度比较大,于是小红制定了一个刷题计划,他找到了 n 套试卷,每套试卷的题目数量为ai。小红每天上午最多打开一套试卷,下午最多打开一套试卷,也可以选择不刷题而摸鱼(当然不能上下午都摸鱼!)。当小红打开一套试卷后,他就会把上面的题目全部刷完。但是小红有强迫症,他希望每天刷的题目总数均为 k 的倍数。请你计算小红最多能刷多少天的题?
输入第—行为两个正整数n和k。
输入第二行为n个正整数ai
其中,1 ≤ n ≤ 105 , 1 ≤ k, ai ≤ 109
一个整数,代表小红最多能刷题的天数
输入
6 4
1 1 2 2 3 4
输出
3
说明:
第一天上午刷 1 号试卷,下午刷 5 号试卷 ,总共刷 4题
第二天上午摸鱼,下午刷 6 号试卷,总共刷 4 题。
第三天上午刷 3号试卷,下午刷4号试卷,总共刷 4 题
输入
5 7
1 2 3 3 3
输出
0
显然,小红没有任何一个方案可以进行刷题。
首先,我们可以使用哈希表去统计题目数量%k的元素数量
对于一道题目,如果它本身就已经是k的倍数,那么为了尽可能多刷,一天只刷一套即可满足条件
其他的情况,就需要凑出来两套卷子a,b,保证a+b是k的倍数,其实就是取哈希表中$min(mp[a],mp[k-a])
C++