讨论 / Pascal AC 纪念
lani711 2016-03-15 22:50:04
点我顶贴 收藏 删除
const oo=100000000;

var f:array[0..501,0..501] of longint;

w,b,sb,sw:array[0..501] of longint;

n,k,i,j,l,color,minx:longint;

function min(a,b:longint):longint;

begin

if a<b then exit(a); exit(b);

end;

begin

readln(n,k);

for i:=1 to n do

begin

readln(color);

if color=1 then inc(b[i])

else inc(w[i]);

end;

for i:=1 to n do sb[i]:=sb[i-1]+b[i];

for i:=1 to n do sw[i]:=sw[i-1]+w[i];

for i:=1 to n-k+1 do f[1,i]:=sb[i]*sw[i];

for i:=2 to k do

for j:=i to n-k+i do

begin

minx:=oo;

for l:=i-1 to j-1 do

minx:=min(minx,f[i-1,l]+(sb[j]-sb[l])*(sw[j]-sw[l]));

f[i,j]:=minx;

end;

writeln(f[k,n]);

end.

查看更多回复
提交回复