动态规划,

用s[i] 记录前 i 类珍珠的总数。推出状态转移方程:

f[i] = min (f[i], (s[i] - s[j] + 10) * price[i] + f[j]);

贴个程序:

 program poj1260;
type
  node=record
    sum,price:integer;
  end;
var
  k,m:longint;
  n,i,j:integer;
  a:array[1..100] of node;
  s,f:array[0..100] of longint;
function min(p,q:longint):longint;
begin
  if p<q then min:=p
    else min:=q;
end;
begin
  readln(m);
  for k:=1 to m do
  begin
    fillchar(a,sizeof(a),0);
    fillchar(s,sizeof(s),0);
    fillchar(f,sizeof(f),0);
    readln(n);
    for i:=1 to n do
    begin
      readln(a[i].sum,a[i].price);
      s[i]:=s[i-1]+a[i].sum;
    end;
    f[1]:=(a[1].sum+10)*a[1].price;
    for i:=2 to n do
    begin
      f[i]:=maxlongint;
      for j:=0 to i-1 do
        f[i]:=min(f[i],f[j]+(s[i]-s[j]+10)*a[i].price);
    end;
    writeln(f[n]);
  end;
end.