题库/YBT0187

#YBT0187. 【例 2】出纳员问题

    传统题 难度: 提高 标签>一本通循环差分约束二分人数正环判定
时间限制1000 ms
内存限制64 MiB
通过率100%1 / 1 次提交
题目描述 查看题解 开始编程Alt+E

YBT0187 · 【例 2】出纳员问题

退出在线编程模式
提高 读懂题意,让每一次思考成为成长。
时间限制1000 ms
内存限制64 MiB
通过率100%1 / 1 次提交

题目描述

原题来自:Asia 2000,题面可参考 ZOJ 1420。 Tehran 的一家每天 24 小时营业的超市,需要一批出纳员来满足它的需要。超市经理雇佣你来帮他解决问题——超市在每天的不同时段需要不同数目的出纳员(例如,午夜时只需要一小批,而下午则需要很多)为顾客提供优质服务。他希望雇佣最少数目的出纳员。 经理已经提供给你一天的每一小时需要出纳员的最少数量——R(0),R(1),⋯,R(23)R(0),R(1),⋯,R(23)。R(0)R(0) 表示从午夜到上午 1:00 需要出纳员的最小数目,R(1)R(1) 表示上午 1:00 到 2:00 需要的,等等。每一天,这些数据都是相同的。有 NN 人申请这项工作,每个申请者 ii 在每 24 小时中,从一个特定的时刻开始连续工作恰好 8 小时,定义 tit_i 为上面提到的开始时刻。也就是说,如果第 ii 个申请者被录取,他(她)将从 tit_i​​  时刻开始连续工作 8 小时。 请你编写一个程序,输入 R(i)R(i) 和 tit_i​​ ,它们都是非负整数,计算为满足上述限制需要雇佣的最少出纳员数目。在每一时刻可以有比对应的 R(i)R(i) 更多的出纳员在工作。

输入

第一行为测试点的数目 TT。 对于每组测试数据,第一行为 24 个整数,表示 R(0),R(1),R(2),⋯,R(23)R(0),R(1),R(2),⋯,R(23); 接下来一行一个正整数 NN,表示申请者数目; 接下来 NN 行每行一个整数 tit_i​​ 。 两组测试数据之间没有空行。

输出

对于每个测试点,输出一行,包含一个整数,表示需要出纳员的最小数目。如果无解,输出 No Solution。

输入样例

1
1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
5
0
23
22
1
10

输出样例

1

提示

对于全部数据,1≤T≤20,0≤N≤1000,0≤R(i)≤1000,0≤ti≤231≤T≤20,0≤N≤1000,0≤R(i)≤1000,0≤t_i≤23。

评测数据说明

本题使用按题意独立构造、双实现核对的训练数据,共10个测试点,非原站或官方原始数据。总分100分。

题目信息

#1567
100%

1 次通过 · 1 次提交

练习难度 提高
时间限制
1000ms
内存限制
64MiB
上传者