讨论 / 6
xshch 2011-04-21 21:35:00
点我顶贴 收藏 删除
怎么做
#1 岑洲杰@2011-04-21 21:34:00
回复 删除
var n,m,z,i:integer; ans:longint;

f:array[0..3200]of longint;

v,t:array[1..60,0..2]of longint;

procedure init;

var i,vp,p,q:integer; o:array[1..60]of integer;

begin readln(n,m); n:=n div 10; z:=0; //记得将价值优化!

fillchar(f,sizeof(f),0);

fillchar(t,sizeof(t),0);

fillchar(o,sizeof(o),0);

for i:=1 to m do begin

readln(vp,p,q); vp:=vp div 10;

if q=0 then begin

inc(z); o[i]:=z; v[z,0]:=vp; t[z,0]:=vp*p end

else if t[o[q],1]=0 then begin

v[o[q],1]:=vp; t[o[q],1]:=vp*p end

else begin

v[o[q],2]:=vp; t[o[q],2]:=vp*p end

end

end;

procedure main;

var i,j:integer; tmp:longint;

begin for i:=1 to z do

for j:=n downto 0 do begin

tmp:=j-v[i,0];

if (tmp>=0)and(f[j]<f[tmp]+t[i,0])

then f[j]:=f[tmp]+t[i,0];

if v[i,1]>0 then begin

tmp:=j-v[i,0]-v[i,1];

if (tmp>=0)and(f[j]<f[tmp]+t[i,0]+t[i,1])

then f[j]:=f[tmp]+t[i,0]+t[i,1]

end;

if v[i,2]>0 then begin

tmp:=j-v[i,0]-v[i,2];

if (tmp>=0)and(f[j]<f[tmp]+t[i,0]+t[i,2])

then f[j]:=f[tmp]+t[i,0]+t[i,2];

tmp:=j-v[i,0]-v[i,1]-v[i,2];

if (tmp>=0)and(f[j]<f[tmp]+t[i,0]+t[i,1]+t[i,2])

then f[j]:=f[tmp]+t[i,0]+t[i,1]+t[i,2]

end

end

end;

begin ans:=0; init; main;

for i:=0 to n do if f[i]>ans then ans:=f[i];

writeln(ans*10)

end.

#2 岑洲杰@2011-04-21 21:34:00
回复 删除
var n,m,z,i:integer; ans:longint;

f:array[0..3200]of longint;

v,t:array[1..60,0..2]of longint;

procedure init;

var i,vp,p,q:integer; o:array[1..60]of integer;

begin readln(n,m); n:=n div 10; z:=0; //记得将价值优化!

fillchar(f,sizeof(f),0);

fillchar(t,sizeof(t),0);

fillchar(o,sizeof(o),0);

for i:=1 to m do begin

readln(vp,p,q); vp:=vp div 10;

if q=0 then begin

inc(z); o[i]:=z; v[z,0]:=vp; t[z,0]:=vp*p end

else if t[o[q],1]=0 then begin

v[o[q],1]:=vp; t[o[q],1]:=vp*p end

else begin

v[o[q],2]:=vp; t[o[q],2]:=vp*p end

end

end;

procedure main;

var i,j:integer; tmp:longint;

begin for i:=1 to z do

for j:=n downto 0 do begin

tmp:=j-v[i,0];

if (tmp>=0)and(f[j]<f[tmp]+t[i,0])

then f[j]:=f[tmp]+t[i,0];

if v[i,1]>0 then begin

tmp:=j-v[i,0]-v[i,1];

if (tmp>=0)and(f[j]<f[tmp]+t[i,0]+t[i,1])

then f[j]:=f[tmp]+t[i,0]+t[i,1]

end;

if v[i,2]>0 then begin

tmp:=j-v[i,0]-v[i,2];

if (tmp>=0)and(f[j]<f[tmp]+t[i,0]+t[i,2])

then f[j]:=f[tmp]+t[i,0]+t[i,2];

tmp:=j-v[i,0]-v[i,1]-v[i,2];

if (tmp>=0)and(f[j]<f[tmp]+t[i,0]+t[i,1]+t[i,2])

then f[j]:=f[tmp]+t[i,0]+t[i,1]+t[i,2]

end

end

end;

begin ans:=0; init; main;//fffff

for i:=0 to n do if f[i]>ans then ans:=f[i];

writeln(ans*10)

end.

#3 岑洲杰@2011-04-21 21:35:00
回复 删除
VaR的氮,M,Z车,我:整数;答:Longint型;

女:数组[0 .. 3200]的Longint型;

五,电话:数组[1 .. 60,0 .. 2] Longint型;

程序初始化;

VaR的我,副总裁,磷,问:整数; &#216;:数组[1 .. 60]的整数;

开始readln(氮,男);护士:为N格10;张:= 0; / /记得将价值优化!

fillchar(女,一下SizeOf(六),0);

fillchar(吨,听sizeof(吨),0);

fillchar(海外,听sizeof(海外),0);

对于i:= 1米开始做

readln(副总裁的P,Q);副总裁:副总裁分区= 10;

如果Q = 0,然后开始

公司(z)的; &#216; [我]:= Z的;五[Z的0]:=副总裁;吨为[Z,0]:= * p的副总裁结束

否则如果T [&#216; [问],1] = 0,然后开始

五[&#216; [问],1]:=副总裁;吨[&#216; [问],1]:= * p的副总裁结束

否则开始

五[&#216; [问],2]:=副总裁;吨[&#216; [问],2]:= * p的副总裁结束

结束

结束;

程序的主要;

VaR的i和j:整数; tmp目录:Longint型;

我开始为:= 1到z做

对于j:= n的downto 0开始做

tmp目录:=合资[我,0];

如果(tmp目录> = 0)和(f研究[J] <f [tmp目录] +吨[我,0])

则f研究[J]:= f的[tmp目录] +吨[我,0];

如果V [我,1]> 0,则开始

tmp目录:=合资[我,0] - V的[我,1];

如果(tmp目录> = 0)和(f研究[J] <f [tmp目录] +吨[我,0] +吨[我,1])

则f研究[J]:= f的[tmp目录] +吨[我,0] +吨[我,1]

结束;

如果V [我,2]> 0,则开始

tmp目录:=合资[我,0] - V的[我,2];

如果(tmp目录> = 0)和(f研究[J] <f [tmp目录] +吨[我,0] +吨[我,2])

则f研究[J]:= f的[tmp目录] +吨[我,0] +吨[我,2];

tmp目录:=合资[我,0] - V的[我,1] - V的[我,2];

如果(tmp目录> = 0)和(f研究[J] <f [tmp目录] +吨[我,0] +吨[我,1] +吨[我,2])

则f研究[J]:= f的[tmp目录] +吨[我,0] +吨[我,1] +吨[我,2]

结束

结束

结束;

开始答:= 0;初始化,主/ / fffff

对于i:= 0到n做如果f [一]>答则答:= f的[我];

writeln(答* 10)

结束。

查看更多回复
提交回复