var i,j,n,tot,x,max:longint;
f,g:array[-1..101,-1..10000]of boolean;
v:array[1..150]of longint;
flag:boolean;
procedure work(k:longint);
var i,j,sum:longint;
begin
fillchar(f,sizeof(f),false);
sum:=0;
for i:=1 to tot do sum:=sum+v[i];
if max=0 then f[i,j]:=(f[i-1,j-v[i]])or(f[i-1,j])
else f[i,j]:=f[i-1,j];
end;
for j:=1 to sum do if f[tot,j] then g[k,j]:=true;
end;
begin
fillchar(g,sizeof(g),false);
readln(n);max:=0;
for i:=1 to n do
begin
tot:=0;
for j:=1 to 150 do
begin
read(v[j]);
if v[j]=-1 then begin
tot:=j-1;
break;
end;
end;
work(i);
end;
for i:=max downto 0 do
begin
flag:=true;
for j:=1 to n do
if g[j,i]=false then
begin
flag:=false;
break;
end;
if flag then begin
writeln(i);break;end;
end;
if flag=false then writeln(0);
readln;readln;
end.
from
ycglovewxx
積木城堡
描述 description
輸入格式 input format
第一行是乙個整數n(n<=100),表示一共有幾座城堡。以下n行每行是一系列非負整數,用乙個空格分隔,按從下往上的順序依次給出一座城堡中所有積木的稜長。用-1結束。一座城堡中的積木不超過100塊,每塊積木的稜長不超過100。
輸出格式 output format
乙個整數,表示最後城堡的最大可能的高度。如果找不到合適的方案,則輸出0。
樣例輸入 sample input
樣例輸出 sample output
注釋 hint
原資料有誤,不知我修正後是不是對?
** source
nlogn年之前浙江省隊選拔第x輪
暴力dp;
對於每乙個城堡,用01揹包判斷 能不能構成高度k
最後從高到低判斷每乙個高度,是否所有城堡都能構成,可以則輸出。
如果都不可以就輸出0
注意陣列大小開100會掛= = 因為還有個-1。。。。
vijos 積木城堡
恰似今天更了七章 我該怎麼辦 看上去好像只能瘋狂寫揹包啦 他們說周四化學通練,我好慌 描述 第一行是乙個整數n n 100 表示一共有幾座城堡。以下n行每行是一系列非負整數,用乙個空格分隔,按從下往上的順序依次給出一座城堡中所有積木的稜長。用 1結束。一座城堡中的積木不超過100塊,每塊積木的稜長不...
積木城堡 dp
xc的兒子小xc最喜歡玩的遊戲用積木壘漂亮的城堡。城堡是用一些立方體的積木壘成的,城堡的每一層是一塊積木。小xc是乙個比他爸爸xc還聰明的孩子,他發現壘城堡的時候,如果下面的積木比上面的積木大,那麼城堡便不容易倒。所以他在壘城堡的時候總是遵循這樣的規則。小xc想把自己壘的城堡送給幼兒園裡漂亮的女孩子...
積木城堡 dp
xc的兒子小xc最喜歡玩的遊戲用積木壘漂亮的城堡。城堡是用一些立方體的積木壘成的,城堡的每一層是一塊積木。小xc是乙個比他爸爸xc還聰明的孩子,他發現壘城堡的時候,如果下面的積木比上面的積木大,那麼城堡便不容易倒。所以他在壘城堡的時候總是遵循這樣的規則。小xc想把自己壘的城堡送給幼兒園裡漂亮的女孩子...