藍橋杯 裝飾珠

2022-09-19 21:09:12 字數 2769 閱讀 8147

在怪物獵人這一款遊戲中,玩家可以通過給裝備鑲嵌不同的裝飾珠來獲取 相應的技能,以提公升自己的戰鬥能力。

已知獵人身上一共有 6 件裝備,每件裝備可能有若干個裝飾孔,每個裝飾孔有各自的等級,可以鑲嵌一顆小於等於自身等級的裝飾珠 (也可以選擇不鑲嵌)。

裝飾珠有 m 種,編號 1 至 m,分別對應 m 種技能,第 i 種裝飾珠的等級為 l

il_i

li​,只能鑲嵌在等級大於等於 l

il_i

li​ 的裝飾孔中。

對第 i 種技能來說,當裝備相應技能的裝飾珠數量達到k

ik_i

ki​個時,會產生wi(

ki

)w_i(k_i)

wi​(ki

​)的價值,鑲嵌同類技能的數量越多,產生的價值越大,即wi(

ki−1

)

(ki)

w_i(k_)wi

​(ki

−1​)

​(ki

​)。但每個技能都有上限pi(

1≤pi

≤7

)p_i(1≤p_i≤7)

pi​(1≤

pi​≤

7),當裝備的珠子數量超過p

ip_i

pi​時,只會產生wi(

pi

)w_i(p_i)

wi​(pi

​)的價值。

對於給定的裝備和裝飾珠資料,求解如何鑲嵌裝飾珠,使得 6 件裝備能得到的總價值達到最大。

輸入的第 1 至 6 行,包含 6 件裝備的描述。其中第i行的第乙個整數n

in_i

ni​表示第i件裝備的裝飾孔數量。後面緊接著n

in_i

ni​個整數,分別表示該裝備上每個裝飾孔的等級l(1≤ l ≤4)。

第 7 行包含乙個正整數 m,表示裝飾珠 (技能) 種類數量。

第 8 至 m + 7 行,每行描述一種裝飾珠 (技能) 的情況。每行的前兩個整數lj(

1≤lj

≤4

)l_j(1≤ l_j ≤4)

lj​(1≤

lj​≤

4)和p j(

1≤pj

≤7

)p_j(1≤ p_j ≤7)

pj​(1≤

pj​≤

7)分別表示第 j 種裝飾珠的等級和上限。接下來p

jp_j

pj​個整數,其中第 k 個數表示裝備該中裝飾珠數量為 k 時的價值wj(

k)

w_j(k)

wj​(k)

。其中1≤n

i≤50,

1≤m≤

104,

1≤wj

(k)≤

10

41 ≤ n_i ≤ 50,1 ≤ m ≤ 10^4,1 ≤ w_j(k) ≤ 10^4

1≤ni​≤

50,1

≤m≤1

04,1

≤wj​

(k)≤

104。

本題是選擇性問題,很顯然題目的本質是乙個揹包問題。6個裝備可以看成同乙個裝備,孔的等級才是關鍵。

我們觀察兩個不同的等級的珠子l和l-1。對於l而言它可以放入l ~ 4的孔中,而l-1能放入l-1 ~ 4的孔中。即l的珠子能放的孔,l-1必然可以放,我們就可以將l從大到小進行珠子的列舉,注意每次等級變化會將揹包的容量也擴大。

再考慮乙個種類的珠子的放入,放入只考慮0 ~ p

ip_i

pi​,且我們只可能從中選擇乙個,這就是經典的分組揹包問題,所以每乙個種類的珠子就是乙個分組,僅可選擇其中的乙個,空間複雜度就為o(6

n)

o(6n)

o(6n

),n為每個裝備的最多孔數。

時間複雜度為o(m

log⁡m+

m∗6∗

n∗7)

=o(m

log⁡m+

2100m)

o(m\log +m*6*n*7 ) = o(m\log + 2100m)

o(mlogm+

m∗6∗

n∗7)

=o(m

logm+2

100m

)

#

include

#include

#include

using

namespace std;

const

int n =

305, m =

1e4+5;

int cnt[5]

;int n,m,dp[n]

;struct

node

}p[m]

;int

main()

} cin>>m;

for(

int i =

1; i <= m ; i ++

)sort

(p+1

,p+m+1)

;memset

(dp,

0x80

,sizeof dp)

, dp[0]

=0;int ans =

0, sum =

0, i =1;

for(

int l =

4; l >=

1; l--)}

i++;}

}for

(int i =

0; i <= sum; i++

) ans =

max(ans, dp[i]);

cout

}

藍橋杯 裝飾珠 動態規劃, 2020, 省賽

題目描述 在怪物獵人這一款遊戲中,玩家可以通過給裝備鑲嵌不同的裝飾珠來獲取 相應的技能,以提公升自己的戰鬥能力。已知獵人身上一共有 6 件裝備,每件裝備可能有若干個裝飾孔,每個裝飾孔有各自的等級,可以鑲嵌一顆小於等於自身等級的裝飾珠 也可以選擇不鑲嵌 裝飾珠有 mm 種,編號 1 至 mm,分別對應...

藍橋杯入門訓練 藍橋杯備賽

begin 1 a b問題str1 input str2 str1.split s int str2 0 int str2 1 print s begin 2 序列求和s int input 用公式計算而不用迴圈,避免超時 n s s 1 2print int n begin 3 圓的面積impor...

藍橋杯 暗戀

問題描述 同在乙個高中,他卻不敢去找她,雖然在別人看來,那是再簡單不過的事。暗戀,是他唯一能做的事。他只能在每天課間操的時候,望望她的位置,看看她傾心的動作,就夠了。操場上的彩磚啊,你們的位置,就是他們能夠站立的地方,他倆的關係就像磚與磚之間一樣固定,無法動搖。還記得當初鋪磚的工人,將整個操場按正方...