问题描述 |
---|
作为 mc 骨灰玩家的徐伟今天来挖矿了,他选中了一块地,总共 n 层,每层有 m 块矿石,如下图就是一个 2 * 8 的地块: 我们用小写字母 a - z 来表示每一种矿石的类型,那么上图的分布就可以表示为: a b c d e f g h a b c d e f g h 然而,每块矿石掉落的矿的数量也可能是不一样的,有的矿石掉落的矿多一些,有的则少一些。 徐伟是个强迫症玩家,他每次挖矿的时候都会从上往下一层一层地挖,不然挖的凹凸不平他会很难受。 现在徐伟告诉你他需要各种矿的数量,你可以告诉他至少需要挖多少层吗? |
输入描述 |
第一行是两个正整数 n 和 m 表示地块的大小。 然后是 n * m 个小写字母,表示每个矿石的类型。 接下来是 n * m 个数字,表示每个矿石可以掉落的矿的数量。(每个数字都是不大于 100 的非负整数) 最后是一个正整数 T 表示询问的次数。 每次询问 26 个数字,表示每种类型的矿徐伟需要的数量。(每个数字都是不大于 1e9 的非负整数) |
输出描述 |
针对每次询问,输出徐伟至少需要挖多少层;如果把整个地块全部挖完都无法满足徐伟,输出 -1;最后换行。 注意:每次询问都是独立的。 |
样例输入复制样例 |
3 4 a b c d a a b b c c d d 1 2 3 4 2 2 3 3 7 6 5 2 2 5 7 2 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 2 5 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |
样例输出 |
2 -1 |
提示说明 |
50% 的测试用例:1 <= n,T <= 200 100% 的测试用例:1 <= n,T <= 20000,1 <= m <= 10 |
相关 |