vijos p1059 積木城堡

2022-08-17 10:30:20 字數 1173 閱讀 2333

xc的兒子小xc最喜歡玩的遊戲用積木壘漂亮的城堡。城堡是用一些立方體的積木壘成的,城堡的每一層是一塊積木。小xc是乙個比他爸爸xc還聰明的孩子,他發現壘城堡的時候,如果下面的積木比上面的積木大,那麼城堡便不容易倒。所以他在壘城堡的時候總是遵循這樣的規則。

小xc想把自己壘的城堡送給幼兒園裡漂亮的女孩子們,這樣可以增加他的好感度。為了公平起見,他決定把送給每個女孩子一樣高的城堡,這樣可以避免女孩子們為了獲得更漂亮的城堡而引起爭執。可是他發現自己在壘城堡的時候並沒有預先考慮到這一點。所以他現在要改造城堡。由於他沒有多餘的積木了,他靈機一動,想出了乙個巧妙的改造方案。他決定從每乙個城堡中挪去一些積木,使得最終每座城堡都一樣高。為了使他的城堡更雄偉,他覺得應該使最後的城堡都盡可能的高。

任務:請你幫助小xc編乙個程式,根據他壘的所有城堡的資訊,決定應該移去哪些積木才能獲得最佳的效果。

第一行是乙個整數n(n<=100),表示一共有幾座城堡。以下n行每行是一系列非負整數,用乙個空格分隔,按從下往上的順序依次給出一座城堡中所有積木的稜長。用-1結束。一座城堡中的積木不超過100塊,每塊積木的稜長不超過100。

乙個整數,表示最後城堡的最大可能的高度。如果找不到合適的方案,則輸出0。

2

2 1 –1

3 2 1 –1

3

一開始以為只能從上面開始取,就直接桶排了,wa8組。

題意是求所有塔能達到相同高度的最大值。(可以抽中間的)

直接將每乙個塔的所有能達到的高度找出來,跟先前的公共高度取與,再更新公共高度,最後倒著找公共最大值。

1 #include2

using

namespace

std;

3const

int maxn=10005;4

intn;

5bool

f[maxn],f2[maxn];

6int

main()723

}24for(int j=1;j<=10001;j++)

2528

}29 f[0]=true;30

for(int i=10001;i>=0;i--)

31if(f[i]==true)32

36return0;

37 }

vijos 1059 積木城堡 暴力

xc的兒子小xc最喜歡玩的遊戲用積木壘漂亮的城堡。城堡是用一些立方體的積木壘成的,城堡的每一層是一塊積木。小xc是乙個比他爸爸xc還聰明的孩子,他發現壘城堡的時候,如果下面的積木比上面的積木大,那麼城堡便不容易倒。所以他在壘城堡的時候總是遵循這樣的規則。小xc想把自己壘的城堡送給幼兒園裡漂亮的女孩子...

Vijos1059 積木城堡 DP

一開始我想到對於每個城堡,每塊積木可以看做物品,但是思路侷限n個城堡這裡,沒有找到突破口。這題本質是乙個01揹包,但是思路十分的巧妙。還是最初的想法,每塊積木可以看做物品,那麼我們就可以知道這個城堡中的積木可以得到的所有可能高度。以此,就可以得到所有城堡可能的高度。最後找出所有可能高度中最高的那個即...

18 03 20 vijos1059積木城堡

xc的兒子小xc最喜歡玩的遊戲用積木壘漂亮的城堡。城堡是用一些立方體的積木壘成的,城堡的每一層是一塊積木。小xc是乙個比他爸爸xc還聰明的孩子,他發現壘城堡的時候,如果下面的積木比上面的積木大,那麼城堡便不容易倒。所以他在壘城堡的時候總是遵循這樣的規則。小xc想把自己壘的城堡送給幼兒園裡漂亮的女孩子...