文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>[分治]USACO/rect1 Shaping Regions

[分治]USACO/rect1 Shaping Regions

时间:2010-11-17  来源:I WILL BE BETTER.

 

 

pascal code
var x1,x2,y1,y2,c:array[0..1000]of longint;
ans:
array[1..3000]of longint;
i,j,k,n,max:longint;
procedure make(l,r,u,d,k,c:longint);
begin
while (k<=n)and((r<=x1[k])or(l>=x2[k])or(u>=y2[k])or(d<=y1[k])) do inc(k);
if k>n then begin ans[c]:=ans[c]+(r-l)*(d-u);exit;end;
if l<=x1[k] then begin make(l,x1[k],u,d,k+1,c);l:=x1[k];end;
if r>=x2[k] then begin make(x2[k],r,u,d,k+1,c);r:=x2[k];end;
if (u<=y1[k]) then begin make(l,r,u,y1[k],k+1,c);u:=y1[k];end;
if (d>=y2[k]) then begin make(l,r,y2[k],d,k+1,c);d:=y2[k];end;
end;
begin
assign(input,
'rect1.in');reset(input);
assign(output,
'rect1.out');rewrite(output);
readln(x2[
0],y2[0],n);
c[
0]:=1;
for i:=1 to n do
begin
readln(x1[i],y1[i],x2[i],y2[i],c[i]);
if c[i]>max then max:=c[i];
end;
for i:=n downto 0 do
begin
make(x1[i],x2[i],y1[i],y2[i],i
+1,c[i]);
end;
for i:=1 to max do
if ans[i]<>0 then writeln(i,' ',ans[i]);
close(input);close(output);
end.

 

相关阅读 更多 +
排行榜 更多 +
超级冒险王安卓版

超级冒险王安卓版

休闲益智 下载
玩具小镇手机版

玩具小镇手机版

休闲益智 下载
这一关特上头手机版

这一关特上头手机版

休闲益智 下载