DP 三角形牧場

2021-07-03 09:08:15 字數 1585 閱讀 9479

時間限制: 1 sec 記憶體限制: 128 mb

和所有人一樣,奶牛喜歡變化。它們正在設想新造型的牧場。奶牛建築師hei想建造圍有漂亮白色柵欄的三角形牧場。她擁有n(3≤n≤40)塊木板,每塊的長度li(1≤li≤40)都是整數,她想用所有的木板圍成乙個三角形使得牧場面積最大。

請幫助hei小姐構造這樣的牧場,並計算出這個最大牧場的面積。

第1行:乙個整數n

第2..n+1行:每行包含乙個整數,即是木板長度。

僅乙個整數:最大牧場面積乘以100然後舍尾的結果。如果無法構建,輸出-1。

5 1

1 3 3 4

692=舍尾後的(100×三角形面積),此三角形為等邊三角形,邊長為4。

var

dp:array[0..100,0..800,0..800]of integer;

x:array[0..100]of longint;

s,p:real;

i,j,k:longint;

n,sum,t,l:longint;

m:string;

begin

readln(n);

for i:=1

to n do

begin

readln(x[i]);

inc(sum,x[i]);

end;

for i:=0

to n do

dp[i,0,0]:=1;

for i:=1

to n do

begin

for j:=x[i] to sum div2do

for k:=0

to sum div2do

if (dp[i-1,j-x[i],k]=1)

then dp[i,j,k]:=1;

for j:=0

to sum div2do

for k:=x[i] to sum div2do

if (dp[i-1,j,k-x[i]]=1)

then dp[i,j,k]:=1;

for j:=1

to sum div2do

for k:=1

to sum div2do

if dp[i-1,j,k]=1

then dp[i,j,k]:=1;

end;

p:=sum/2;

s:=-1;

for j:=1

to (sum div

2) do

for k:=1

to (sum div

2) do

if (dp[n,j,k]=1)and(j+k>sum-j-k)and(sum-k>k)and(sum-j>j)

then s:=max(s,sqrt(p*(p-j)*(p-k)*(p-sum+j+k)));

if s<0

then writeln(-1)

else

begin

str(s*100:0:2,m);

m:=copy(m,1,length(m)-3);

writeln(m);

end;

end.

數字三角形 DP

數字三角形 時間限制 10000ms 單點時限 1000ms 記憶體限制 256mb 問題描述 小hi和小ho在經歷了螃蟹先生的任務之後被獎勵了一次出國旅遊的機會,於是他們來到了大洋彼岸的美國。美國人民的生活非常有意思,經常會有形形色色 奇奇怪怪的活動舉辦,這不,小hi和小ho剛剛下飛機,就趕上了當...

(dp)數字三角形

數字三角形問題。有乙個由非負整數組成的三角形,第一行只有乙個數,除了最下行 之外每個數的左下方和右下方各有乙個數 從第一行的數開始,每次可以往左下或右下走一格,直到走到最下行,把沿途經過的數 全部加起來。如何走才能使得這個和盡量大?具體實現 中的d我們用maxsum表示 最初的位置我們用d存 1.把...

數字三角形 dp

給定乙個如下圖所示的數字三角形,從頂部出發,在每一結點可以選擇移動至其左下方的結點或移動至其右下方的結點,一直走到底層,要求找出一條路徑,使路徑上的數字的和最大。73 8 8 1 0 2 7 4 4 4 5 2 6 5 輸入格式 第一行包含整數n,表示數字三角形的層數。接下來n行,每行包含若干整數,...