題目描述
張超來到了超市購物。
每個物品都有**,正好趕上商店推出**方案。就是把許多東西一起買更便宜(保證優惠方案一定比原價便宜)。物品要買正好的個數,而且不能為了便宜而買不需要的物品。
張超拿到了優惠方案,和需要購買的物品清單,當然想求出最小的花費。他是資訊學選手,自然地想到寫個程式解決問題。
輸入第一行**物品的種類數(0 < = s < = 99)。
第二行…第s+1 行每一行都用幾個整數來表示一種**方式。
第乙個整數 n (1 < = n < = 5),表示這種優惠方式由 n 種商品組成。
後面 n 對整數 c 和 k 表示 k (1 < = k < = 5)個編號為 c (1 < = c < = 999)的商品共同構成這種方案。
最後的整數 p 表示這種優惠的***(1 < = p < = 9999)。也就是把當前的方案中的物品全買需要的**。
第 s+2 行這行乙個整數b (0 < = b < = 5),表示需要購買 b 種不同的商品。
第 s+3 行…第 s+b+2 行這 b 行中的每一行包括三個整數:c ,k ,和 p 。
c 表示唯一的商品編號(1 < = c < = 999),
k 表示需要購買的 c 商品的數量(1 < = k < = 5)。
p 表示 c 商品的原價(1 < = p < = 999)。
最多購買 5*5=25 個商品。
輸出乙個整數ans,表示需要花的最小費用
樣例輸入
21 7 3 5
2 7 1 8 2 10
27 3 2
8 2 5
樣例輸出
14
//完全揹包的變形,動態規劃
#include
#include
#include
#define inf 0x3f3f3f3f
using
namespace std;
struct node1pa[
100]
;//方案打包
struct node2pb[10]
;int n,m,res[6]
[6][
6][6
][6]
;int
main()
scanf
("%d"
,&pa[i]
.money);}
scanf
("%d"
,&m)
;for
(i =
0;i)memset
(res,inf,
sizeof
(res));
res[0]
[0][
0][0
][0]
=0;//動態規劃的初始化
int b1,b2,b3,b4,b5,m1,m2,m3,m4,m5;
for(i =
0;i)printf
("%d\n"
,res[pb[0]
.k][pb[1]
.k][pb[2]
.k][pb[3]
.k][pb[4]
.k])
;return0;
}
藍橋杯 演算法提高VIP 掃雷
掃雷遊戲你一定玩過吧!現在給你若干個n m的地雷陣,請你計算出每個矩陣中每個單元格相鄰單元格內地雷的個數,每個單元格最多有8個相鄰的單元格。0 n,m 100 注意兩個矩陣之間應該有乙個空行,由於oj的格式化這裡不能顯示出來 資料規模和約定 0 n,m 100 輸入包含若干個矩陣,對於每個矩陣,第一...
藍橋杯 演算法提高VIP 班級排名
題目描述 達達在陶陶的影響下,也對學習慢慢的產生了興趣。他在每次考試之後,都會追著老師問,自己在班級的總名次是多少。考試一多,老師也不耐煩了,於是他給了達達所有人的成績,讓他自己去算出自己的排名。可人太多了,達達也無法立即算出來,於是他想讓你幫幫他。資料規模和約定 n 100,名字長度不超過30,分...
藍橋杯 演算法提高VIP 交換Easy
時間限制 1sec 記憶體限制 128mb 題目描述 給定n個整數組成的序列,每次交換當前第x個與第y個整數,要求輸出最終的序列。輸入 第一行為序列的大小n 1 n 1000 和操作個數m 1 m 1000 第二行包含n個數字,表示初始序列。接下來m行,每行兩個整數x,y 1 x,y n 表示要交換...