9515.四角洲行动

Time Limit: 3s Memory Limit: 512MB

Kagari 最近沉迷一个叫做四角洲行动的游戏,这游戏里面有一个摸金模式,具体内容就是在游戏地图上寻找各种材料,并放在背包和胸挂等装备的格子里带出。不同材料有不同的大小和价值,同样背包,胸挂,口袋等不同装备也有各自的容量。

当然在这个游戏里面,每个人都希望自己带出去的材料的总价值最大,但由于材料的大小和价值实在太多了,Kagari 实在算不出来带哪些材料才能获得最大的价值。具体的,这个游戏中总共有四种形状大小的格子:$\texttt{1x1, 1x2, 1x3, 2x2}$,同样,材料的形状也是这四种。材料的放置有如下要求:

  • 材料两维的大小不能超过放入的格子的两维大小;

  • 不能拆分改变材料的形状,但可以旋转,即交换材料的两维大小;

  • 可以将多个材料放入同一个格子,但材料之间不能重叠;

  • 格子不需要装满。

例如,一个 $\texttt{1x2}$ 的材料和两个 $\texttt{1x1}$ 的材料就可以一起放入一个 $\texttt{2x2}$ 的格子,但此时这个格子不能放入更多的材料了。又例如一个 $\texttt{1x3}$ 的材料不能放入 $\texttt{2x2}$ 大小的格子内,两个 $\texttt{1x1}$ 的材料可以放入一个 $\texttt{1x3}$ 的格子,并且此时还可以再放入一个 $\texttt{1x1}$ 的材料,但不能放入其他大小的材料 。

现在 Kagari 已经统计好了她身上装备的各种格子的数量,以及已经捡到的所有材料的大小和价值,她希望写一个程序来计算能带出最大的价值。但由于 Kagari 是 2025 年 9 月才入学的新生,她还不会写代码,所以她希望你来帮忙。

Input Format(From the terminal/stdin)

首先一个正整数 $T$,表示数据组数。

对于每组数据,第一行四个非负整数 $a,b,c,d$($a+b+c+d>0,a,b,c,d\le 100$),分别表示大小为 $\texttt{1x1, 1x2, 1x3, 2x2}$ 的格子数量。

接下来四行,按照大小为 $\texttt{1x1, 1x2, 1x3, 2x2}$ 的顺序描述每种材料,第 $i$ 行首先一个非负整数 $k_i$($0\le k_i\le 1000$),表示这种大小的材料数量,接下来 $k_i$ 个正整数 $v_{i,1},\ldots,v_{i,k_i}$($1\le v_{i,j}\le 1\times 10^4$)分别表示每个材料的价值。

保证所有数据的 $a$ 之和,$b$ 之和,$c$ 之和,$d$ 之和都不超过 $5\times 100$,所有数据的 $k_1$ 之和,$k_2$ 之和,$k_3$ 之和,$k_4$ 之和都不超过 $4\times 10^5$。

Output Format(To the terminal/stdout)

对于每组数据,输出一行一个非负整数,表示能带出的最大价值。

Sample Input

Copy
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 \n
 · · · \n
 · \n
 ·  \n
 · \n
 \n
 · · · \n
 · · ·  · · · · ·  · \n
 ·  ·  ·  \n
 ·  \n
 \n
 · · · \n
 ·  · \n
 · \n
 ·  ·  · \n
 · ·  \n

Sample Output

Copy
19
71
67  \n
  \n
  \n
Source: 2025“钉耙编程”中国大学生算法设计暑期联赛(5), HDU, 8031

Submit

请先 登录

© 2025 FAQs