1654: 出纳员问题

题目描述


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

输入


第一行为测试点的数目
T
T。
对于每组测试数据,第一行为
24
24 个整数,表示
R(0),R(1),R(2),\cdots ,R(23)
R(0),R(1),R(2),⋯,R(23);
接下来一行一个正整数
N
N,表示申请者数目;
接下来
N
N 行每行一个整数
t_i
ti

两组测试数据之间没有空行。

输出


对于每个测试点,输出一行,包含一个整数,表示需要出纳员的最小数目。如果无解,输出 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\le T\le 20,0\le N\le 1000,0\le R(i)\le 1000,0\le t_i\le 23
1≤T≤20,0≤N≤1000,0≤R(i)≤1000,0≤ti
≤23。

来源/分类


ybttg 差分约束系统 二分

请先 登录 后评论
  • 0 关注
  • 0 收藏,417 浏览
  • 轩爸 提出于 2019-08-02 22:17

相似问题