1244. 积木游戏

单点时限: 2.0 sec

内存限制: 256 MB

SERCOI 最近设计了一种积木游戏。每个游戏者有 N 块编号依次为 1 ,2,…,N 的长方体积木。对于每块积木,它的三条不同的边分别称为”a 边”、“b 边”和”c 边”,如下图所示:

游戏规则如下:

1、从 N 块积木中选出若干块,并将它们分成 M (l<=M<=N) 堆,称为第 1 堆,第 2 堆…,第 M 堆。每堆至少有 1 块积木,并且第 K 堆中任意一块积木的编号要大于第 K+1 堆中任意一块积木的编号 (2<=K<=M)。

  1. 对于每一堆积木,游戏者要将它们垂直摞成一根柱子,并要求满足下面两个条件:

(1) 除最顶上的一块积木外,任意一块积木的上表面同且仅同另一块积木的下表面接触,并且要求下面的积木的上表面能包含上面的积木的下表面,也就是说,要求下面的积木的上表面的两对边的长度分别大于等于上面的积木的两对边的长度。

(2) 对于任意两块上下表面相接触的积木,下面的积木的编号要小于上面的积木的编号。

最后,根据每人所摞成的 M 根柱子的高度之和来决出胜负。

请你编一程序,寻找一种摞积木的方案,使得你所摞成的 M 根柱子的高度之和最大。

输入格式

第一行有两个正整数 N 和 M (1<=M<=N<=100),分别表

示积木总数和要求摞成的柱子数。这两个数之间用一个空格符隔开。接下来 N 行依次是编号

从 1 到 N 的 N 个积木的尺寸,每行有三个;至 1000 之间的整数,分别表示该积木 a 边 ,b 边

和 c 边的长度。同一行相邻两个数之间用一个空格符隔开。

输出格式

输出只有一行,为一个整数,表示 M 根柱子的高度之和。

样例

Input
4 2
10 5 5
8 7 7
2 2 2
6 6 6
Output
24

63 人解决,83 人已尝试。

121 份提交通过,共有 392 份提交。

3.9 EMB 奖励。

创建: 17 年,5 月前.

修改: 6 年,9 月前.

最后提交: 2 周,5 天前.

来源: NOI 1997

题目标签