题目名称 261. [NOI 1997]积木游戏
输入输出 buildinggame.in/out
难度等级 ★★☆
时间限制 1000 ms (1 s)
内存限制 128 MiB
测试数据 10
题目来源 GravatarBYVoid 于2009-02-12加入
开放分组 全部用户
提交状态
分类标签
NOI 动态规划
分享题解
通过:79, 提交:187, 通过率:42.25%
GravatarPom 100 0.009 s 0.45 MiB C++
Gravatarxyt 100 0.017 s 1.72 MiB C++
Gravatar牧殇 100 0.024 s 0.07 MiB C++
GravatarHzoi_QTY 100 0.025 s 0.52 MiB C++
GravatarKZNS 100 0.026 s 11.11 MiB C++
GravatarIcefox 100 0.027 s 0.43 MiB C++
Gravatarムラサメ 100 0.027 s 0.61 MiB C++
Gravatardavid942j 100 0.028 s 0.47 MiB C++
Gravatardavid942j 100 0.029 s 0.47 MiB C++
Gravatar农场主 100 0.030 s 0.95 MiB C++
本题关联比赛
EYOI与SBOI开学欢乐赛5th
关于 积木游戏 的近10条评论(全部评论)
1.积木不一定都要选完
2.m,n是下面一块积木接触面的两条边,x,y是上面一块积木接触面的两条边,则①m>=x和n>=y ②m>=y和n>=x,满足一种即可
GravatarHzoi_Queuer
2016-09-26 12:16 3楼
GravatarTenderRun
2016-04-11 19:15 2楼
IOI1999 中国集训队论文集 来煜坤
Gravatarmikumikumi
2015-09-06 11:39 1楼

261. [NOI 1997]积木游戏

★★☆   输入文件:buildinggame.in   输出文件:buildinggame.out   简单对比
时间限制:1 s   内存限制:128 MiB

【题目描述】

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

游戏规则如下:

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

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

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

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


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


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

【输入格式】

输入文件的第一行有两个正整数 $N$ 和 $M(1<=M<=N<=100)$,分别表示积木总数和要求摞成的柱子数。

接下来 $N$ 行依次是编号从 $1$ 到 $N$ 的 $N$ 个积木的尺寸,每行有三个 $1$ 至 $1000$ 之间的整数,分别表示该积木 $a$ 边,$b$ 边和 $c$ 边的长度。同一行相邻两个数之间用一个空格符隔开。

【输出格式】

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

【样例输入1】

4 2
10 5 5
8 7 7
2 2 2
6 6 6

【样例输出1】

24

【样例输入/输出 2】

输入输出样例2

【来源】

$NOI$ $1997$