xc的兒子小xc最喜歡玩的遊戲用積木壘漂亮的城堡。城堡是用一些立方體的積木壘成的,城堡的每一層是一塊積木。小xc是乙個比他爸爸xc還聰明的孩子,他發現壘城堡的時候,如果下面的積木比上面的積木大,那麼城堡便不容易倒。所以他在壘城堡的時候總是遵循這樣的規則。
小xc想把自己壘的城堡送給幼兒園裡漂亮的女孩子們,這樣可以增加他的好感度。為了公平起見,他決定把送給每個女孩子一樣高的城堡,這樣可以避免女孩子們為了獲得更漂亮的城堡而引起爭執。可是他發現自己在壘城堡的時候並沒有預先考慮到這一點。所以他現在要改造城堡。由於他沒有多餘的積木了,他靈機一動,想出了乙個巧妙的改造方案。他決定從每乙個城堡中挪去一些積木,使得最終每座城堡都一樣高。為了使他的城堡更雄偉,他覺得應該使最後的城堡都盡可能的高。
任務:請你幫助小xc編乙個程式,根據他壘的所有城堡的資訊,決定應該移去哪些積木才能獲得最佳的效果。
第一行是乙個整數n(n<=100),表示一共有幾座城堡。以下n行每行是一系列非負整數,用乙個空格分隔,按從下往上的順序依次給出一座城堡中所有積木的稜長。用-1結束。一座城堡中的積木不超過100塊,每塊積木的稜長不超過100。
乙個整數,表示最後城堡的最大可能的高度。如果找不到合適的方案,則輸出0。
22 1 –1
3 2 1 –1
3
一開始以為只能從上面開始取,就直接桶排了,wa8組。
題意是求所有塔能達到相同高度的最大值。(可以抽中間的)
直接將每乙個塔的所有能達到的高度找出來,跟先前的公共高度取與,再更新公共高度,最後倒著找公共最大值。
1 #include2using
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想把自己壘的城堡送給幼兒園裡漂亮的女孩子...