P10941 Cashier Employment
题目描述
德黑兰的一家超市每天都营业 $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`。