打怪
题号:NC16032
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

有a种武器,b种属性,和c种怪物。对于第k种怪物,给出武器i和属性j的搭配在一个单位时间内对其造成的伤害hk,i,j。已知一开始使用武器i,需要时间xi,使用属性i,需要时间yi。然后从武器i直接切换成武器j,需要时间fi,j,从属性i直接切换成属性j需要时间gi,j。有一个长度为n的怪物序列,给出怪物i的血量wi和种类ti,在打怪物的时候可以随意切换武器和属性,问按顺序打死所有怪物(使得血量<=0)至少需要多少时间。

输入描述:

给出四个整数a,b,c,n (1 <= a,b,n <= 100, 1 <= c <= 20)
接下来一行给出a个数字表示x   (1 <= xi <= 1e5)
接下来一行给出b个数字表示yi    (1 <= yi <= 1e5)
接下来a行每行a个整数,表示fi,j    (fi,i = 0, 当i!=j时,1 <= fi,j <= 1e3)
接下来b行每行b个整数,表示gi,j  (gi,i = 0, 当i!=j时,1 <= gi,j <= 1e3)
接下来c个矩阵,每个矩阵有a行,每行b个整数,表示hk,i,j (1 <= hk,i,j <= 1e4)
接下来一行读入n个整数表示wi (1 <= wi <= 1e8)
接下来一行读入n个整数表示ti (1 <= ti <= c)

输出描述:

输出一个整数表示答案。
示例1

输入

复制
2 2 1 1
1 100
1 100
0 10
5 0
0 7
6 0
2 3
4 5
1001
1

输出

复制
220