1697 出纳员问题 | OJ题库 | CODE STUDY
CODE STUDY
Programming Practice Platform

欢迎回来

1697

出纳员问题

Easy 时间限制 1000 ms 内存限制 262144 KB
差分约束

题目详情

返回题库

题目描述

德黑兰的一家超市每天都营业 $24$ 小时,需要一些收银员来满足需求。超市经理雇佣了你来帮助他解决他的问题。问题是,这个超市在不同时间需要不同数量的收银员(比如,午夜的时候需要较少的收银员,而在正午时分需要很多)来给他的客户提供很好的服务,并且他需要雇佣尽量少的收银员。

经理给你提供了对于一天中每个小时所需要的最少的收银员数量。数据由 $24$ 个整数 $R(0),R(1),\dots,R(23)$ 表示:$R(0)$ 代表从午夜到凌晨 $1:00$ 需要的最少收银员数量,$R(1)$ 表示从 $1:00$ 到 $2:00$ 所需要的,以此类推。注意这些数字在每一天都是相同的。这个工作有 $N$ 个合格的申请者,第 $i$ 个申请者每天从约定的时间 $t_i$(代表 $t_i:00$ 时刻,$0 \le t_i \le 23$)开始每天连续不间断地工作 $8$ 小时。收银员不会代替别人工作,并且会严格按照计划执行,并且有足够的收银机和柜台供他们使用。

你需要写一个程序,对于所有 $i=0\dots 23$ 输入 $R(i)$ 并且对于所有 $i=1\dots N$ 输入 $t_i$(都是非负整数),计算满足上述条件所需要的所需要雇佣的最少收银员数量。注意,实际上在某一时刻在工作的收银员数量可能超过限制条件,此时也是合法的。

输入描述

输入的第一行是这个题目的测试用例数量(最多 $20$)。每个测试的第一行有 $24$ 个数字,分别代表 $R(0),R(1),\dots,R(23)$($R(i)$ 最多 $100$)。第二行有一个数字 $N$($0 \le N \le 1000$),即应聘者数量。之后的 $N$ 行,第 $i$ 行代表 $t_i$($0 \le t_i \le 23$)。各组测试用例之间没有空行。

输出描述

对于每个测试用例,输出一行代表所需要雇佣的最少应聘者数量。

如果无解,输出No Solution

测试样例

样例支持多行内容展示
样例1
输入
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
editor.py

提交前会先自动运行样例。只有样例全部通过,才会进入后端正式判题。