讨论 / 流星雨 70 分?
phoenix 2008-10-21 05:33:00
点我顶贴 收藏 删除
3 4 5组数据有什么特别的么?我全判的无解.

还是我的程序错了?!

#1 guoshi3@2008-08-30 05:19:00
回复 删除
你的程序呢?贴出来看看
#2 phoenix@2008-08-30 05:25:00
回复 删除
我的程序v可以减少一维,但懒得改了,凑活看吧.

const dx:array[1..4]of integer=(1,0,-1,0);

dy:array[1..4]of integer=(0,1,0,-1);

type data=record

x,y:integer;

t:integer;

end;

var x,y,t:array[1..50000]of longint;

v:array[-1..301,-1..301,0..301]of boolean;

l:array[1..90000]of data;

vis:array[0..301,0..301]of boolean;

n,m,maxt,i,t1,j:longint;

procedure init;//计算陨石掉落时间

//v[x,y,t] x,y坐标,t时间

//其实不用t,没改

var i,j:longint;

begin

for i:=1 to n do

begin

for j:=t[i] to maxt+1 do

begin

v[x[i],y[i],j]:=true;

v[x[i]-1,y[i],j]:=true;

v[x[i],y[i]-1,j]:=true;

v[x[i],y[i]+1,j]:=true;

v[x[i]+1,y[i],j]:=true;

end;

end;

end;

procedure bfs; //从[0,0] bfs

var xx,yy,i,j:longint;

h,t:longint;

begin

h:=0;t:=1;

fillchar(l,sizeof(l),0);

fillchar(vis,sizeof(vis),0);

vis[0,0]:=true;

repeat

inc(h);

for i:=1 to 4 do

begin

xx:=l[h].x+dx[i];

yy:=l[h].y+dy[i];

if (xx>=0)and(xx<=300)and(yy>=0)and(yy<=300)and(not vis[xx,yy])and(not v[xx,yy,l[h].t+1]) then //vis[x,y] 到过没 ,v[xx,yy,l[h].t+1] 就是到xx,yy再一步会不会被砸到

begin

inc(t);

l[t].x:=xx;

l[t].y:=yy;

l[t].t:=l[h].t+1;

vis[xx,yy]:=true;

if not v[xx,yy,maxt+1] then begin writeln(l[t].t);halt end;//判解

end;

end;

until h>t;

end;

begin

readln(n);

for i:=1 to n do

begin

readln(x[i],y[i],t[i]);

if t[i]>maxt then maxt:=t[i];

end;

init;

bfs;

writeln(-1);

end.

#3 phoenix@2008-08-30 05:33:00
回复 删除
把第三组数据发出来也行
#4 guoshi3@2008-08-30 05:34:00
回复 删除
第三组数据n是30000,第四组15000,第五组50000.发出来太占地儿。你要是要给你发邮箱里
#5 phoenix@2008-08-30 05:36:00
回复 删除
#6 phoenix@2008-08-30 05:40:00
回复 删除
发完告诉我一声(回个帖)
#7 phoenix@2008-08-30 05:43:00
回复 删除
收到,thanks
#8 guoshi3@2008-08-30 05:43:00
回复 删除
晕,这就10分,我正看你程序呢。

我就不信了,我还非得找出哪错了不可。不然这10分我受之有愧

不好找啊,我是dfs,你是bfs,思路就不同

#9 guoshi3@2008-08-30 05:52:00
回复 删除
那个,我发现个小问题

v:array[-1..301,-1..301,0..301]of boolean;

t[i]范围是<=1000的。

#10 asce@2008-08-30 05:58:00
回复 删除
啊!看错了!我看成t也是300了!thanks!
查看更多回复
提交回复