C. 双工位排期
双工位排期
秋招模拟赛第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.
只关心 aimodk。余数 0 的检测单可以单独成一天。其余把余数 a 与 k−a 配对,每对一天;若 2a≡0(modk) 则同余数组内两两配对。
时间复杂度 O(n),空间复杂度 O(min(n,k))。
实验室有 n 份检测单,第 i 份包含 ai 个样本。每天上午至多安排一份、下午至多安排一份,且当天不能两个工位都空着。当天实际处理的样本数之和必须是 k 的倍数。每份检测单最多使用一次,一旦安排就必须整份做完。
请计算最多可以安排多少天。
约束:1≤n≤100000,1≤k,ai≤1000000000。
第一行包含两个正整数 n 和 k,分别表示检测单份数与倍数要求,满足 1≤n≤100000,1≤k≤1000000000。
第二行包含 n 个正整数 a1,a2,…,an,满足 1≤ai≤1000000000。
输出一个整数,表示最多可以安排的天数。
输入
4 5
2 3 7 8
输出
2
说明
对 k=5 取模后得到 2,3,2,3。
2 与 3 可以两两配对,共两对,因此最多安排 2 天。
输入
3 2
4 6 9
输出
2
说明
模 2 后为 0,0,1。余数为 0 的任务可以单独占一天(另一个班次空着),共 2 天;余数 1 无法配对。
输入
1 10
20
输出
1
说明
唯一任务的工作量是 10 的倍数,单独安排一天即可。
输入
7 6
1 5 11 12 13 7 18
输出
4
说明
模 6 后可分成:余 0 的单独使用,以及余数互补的配对。
最多得到 4 天。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册