青龙白狐 2012-08-26 06:41:00
点我顶贴
收藏
删除
我觉得s=t不需要单独讨论呀,但不讨论过不了......
附程序,请大牛指点,谢!
var i,j,m,n,k,p,l,min,kk:longint;
f:array[0..9000] of 0..1;
flog:array[0..9000] of longint;
a:array[0..100] of longint;
s,t:longint;
begin
readln(l);
readln(s,t,m);
for i:=1 to m do read(a[i]);
if s=t then
begin
kk:=0;
for i:=1 to m do
if a[i] mod s=0 then inc(kk);
writeln(kk);
halt
end;
for i:=1 to m-1 do
for j:=i+1 to m do
if a[i]>a[j] then
begin
p:=a[i];
a[i]:=a[j];
a[j]:=p
end;
a[0]:=0;
fillchar(f,sizeof(f),0);
for i:=0 to m-1 do
if a[i]<a[i+1]-80 then
begin
kk:=a[i+1]-a[i]-80;
for j:=i+1 to m do
a[j]:=a[j]-kk
end;
for i:=1 to m do
inc(f[a[i]]);
for i:=0 to a[m] do flog[i]:=1000;
for i:=a[m] downto 0 do
for j:=s to t do
if flog[i]>flog[i+j]+f[i] then
flog[i]:=flog[i+j]+f[i];
writeln(flog[0])
end.