#Lutece3404. 四角洲行动
四角洲行动
Description
Kagari 最近沉迷一个叫做四角洲行动的游戏,这游戏里面有一个摸金模式,具体内容就是在游戏地图上寻找各种材料,并放在背包和胸挂等装备的格子里带出。不同材料有不同的大小和价值,同样背包,胸挂,口袋等不同装备也有各自的容量。
当然在这个游戏里面,每个人都希望自己带出去的材料的总价值最大,但由于材料的大小和价值实在太多了,Kagari 实在算不出来带哪些材料才能获得最大的价值。具体的,这个游戏中总共有四种形状大小的格子:,同样,材料的形状也是这四种。材料的放置有如下要求:
- 材料两维的大小不能超过放入的格子的两维大小;
- 不能拆分改变材料的形状,但可以旋转,即交换材料的两维大小;
- 可以将多个材料放入同一个格子,但材料之间不能重叠;
- 格子不需要装满。
例如,一个 的材料和两个 的材料就可以一起放入一个 的格子,但此时这个格子不能放入更多的材料了。又例如一个 的材料不能放入 大小的格子内,两个 的材料可以放入一个 的格子,并且此时还可以再放入一个 的材料,但不能放入其他大小的材料。当然具体的情况也可以参照上面的示例图。
现在 Kagari 已经统计好了她身上装备的各种格子的数量,以及已经捡到的所有材料的大小和价值,她希望写一个程序来计算能带出最大的价值。但由于 Kagari 是 2025 年 9 月才入学的新生,她还不会写代码,所以她希望你来帮忙。
Input
首先一个正整数 (),表示数据组数。
对于每组数据,第一行四个非负整数 (),分别表示大小为 的格子数量。
接下来四行,按照大小为 的顺序描述每种材料,第 行首先一个非负整数 (),表示这种大小的材料数量,接下来 个正整数 ()分别表示每个材料的价值。
保证所有数据的 之和, 之和, 之和, 之和都不超过 。
Output
对于每组数据,输出一行一个非负整数,表示能带出的最大价值。
Samples
3
1 2 1 0
1 3
1 10
1 6
0
3 0 2 0
9 2 9 10 3 1 1 2 10 7
3 14 10 14
1 21
0
0 1 2 0
2 10 6
1 2
3 24 27 9
2 8 16
19
71
67
Resources
The 23rd UESTC Programming Contest Final