#421. 出纳员问题

出纳员问题

题目描述

原题来自:Asia 2000,题面可参考 [ZOJ 1420]

Tehran 的一家每天 24\red{24 }小时营业的超市,需要一批出纳员来满足它的需要。超市经理雇佣你来帮他解决问题——超市在每天的不同时段需要不同数目的出纳员(例如,午夜时只需要一小批,而下午则需要很多)为顾客提供优质服务。他希望雇佣最少数目的出纳员。

经理已经提供给你一天的每一小时需要出纳员的最少数量——R(23)R(0),R(1),,R(23)\red{R(23)R(0),R(1),⋯,R(23)}R(0)\red{R(0)} 表示从午夜到上午 1:00\red{1:00} 需要出纳员的最小数目,R(1)\red{R(1)} 表示上午 1:00\red{1:00 }2:00\red{2:00} 需要的,等等。每一天,这些数据都是相同的。有N\red{ N }人申请这项工作,每个申请者 i\red{i} 在每24\red{ 24 }小时中,从一个特定的时刻开始连续工作恰好 8\red{8} 小时,定义 ti\red{t_i​} 为上面提到的开始时刻。也就是说,如果第 i\red{i} 个申请者被录取,他(她)将从ti\red{ t_i​ }时刻开始连续工作8\red{ 8 }小时。

请你编写一个程序,输入 R(i)\red{R(i) }ti\red{t_i​},它们都是非负整数,计算为满足上述限制需要雇佣的最少出纳员数目。在每一时刻可以有比对应的 R(i)\red{R(i) }更多的出纳员在工作。

输入格式

第一行为测试点的数目 T\red{T}

对于每组测试数据,第一行为 24\red{24 }个整数,表示R(0),R(1),R(2),,R(23)\red{ R(0),R(1),R(2),⋯,R(23)}; 接下来一行一个正整数 N\red{N},表示申请者数目; 接下来N\red{ N }行每行一个整数 ti\red{t_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

提示

对于全部数据,1T20,0N1000,0R(i)1000,0ti23\red{1\le T\le 20,0\le N\le 1000,0\le R(i)\le 1000,0\le t_i\le 23}