回 帖 发 新 帖 刷新版面

主题:[讨论][加分!!]奇怪的商店

[问题描述]
某人发现,他家门口的那条路上有一些商店。不过这些商店很奇怪。在这些商店里,所有物品都是分档次的,但是,如果要买一个档次较高的物品,不能直接买,而是要把档次比该物品低1的同一种物品给买来,并且加上该物品价格减去同种低档物品的价格的差。比如要买一个物品,档次是4,那么就必须买同一种并且档次是3的物品,再加上两者的价格差。不过为了让你省事,商店老板已经把任何物品的相邻档次价格的差算好了。

但是这些商店里还有一个奇怪的规定:某些物品只有买了其它一个或几个物品才可以买(这一个或几个物品被称为条件物品),而且这些条件物品必须也达到一定的档次才行。

他只想到离他家最近的那个商店买东西,在每次买东西之前,他已经把他要买的物品编上了号并且算出了这个物品可以带给他的好处。我们用Pni表示档次为n的i号物品的附加价格,用Vni表示档次为n的i号物品的好处。
现在他想知道,(他已经买了一些物品)用他剩余的钱,怎么买才可以得到最多的好处。
[输入]
第一行是2个数,表示他身上剩余的钱数M(10<=M<=100)和他要买的物品的总数T(1<=T<=20)
接下来分别是这T个物品的描述。每个物品的描述共5行。第一行是这个物品的编号i和最高的档次G(1<=G<=15),第二行G个数,分别表示P1i(就是这个物品的最低档的价格)、P2i……PGi。第三行一个数F,表示条件物品的总数。第四行F组数,用来描述条件物品,每组数用j--l表示,表示档次为l的j号物品是一个条件物品(若F为0则第四行为一个空行)。第五行也是G个数,表示V1i、V2i……VGi。每个物品描述完后有一个空行。
所有物品描述完后,最后一行是T个数,第i个数表示这个人所拥有的i号物品中档次最高的物品的档次(若这个数为0表示他还没买i号物品)
[输出]
用他剩下的钱能够得到的好处的最大值。
[样例输入]
25 3
1 4
13 7 8 11
0

5 7 12 14

2 5
12 10 9 13 8
1
1--2
8 11 15 17 22

3 4
7 5 4 10
2
1--3 2--1
9 13 14 16 21

2 1 0
[样例输出]
48

回复列表 (共4个回复)

沙发

用穷举法应该可以,大概是这样,具体程序正在探究中......

板凳

这个应该使用搜索来做,搜索我学的不太好,很抱歉不能解

3 楼

不,不是,要用动态规划来做。合那个学分问题性质是一样的!

4 楼

同意.....
可看这里:http://www.programfan.com/club/post-256843.html

我来回复

您尚未登录,请登录后再回复。点此登录或注册