藍橋杯 演算法提高VIP 促銷購物

2021-10-23 10:03:50 字數 1603 閱讀 1076

題目描述

張超來到了超市購物。

每個物品都有**,正好趕上商店推出**方案。就是把許多東西一起買更便宜(保證優惠方案一定比原價便宜)。物品要買正好的個數,而且不能為了便宜而買不需要的物品。

張超拿到了優惠方案,和需要購買的物品清單,當然想求出最小的花費。他是資訊學選手,自然地想到寫個程式解決問題。

輸入第一行**物品的種類數(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 表示要交換...