未完成题目
来源:互联网 发布:centos 7 安装desktop 编辑:程序博客网 时间:2024/06/05 04:57
广州选拔2014 T3
var
n,i,j,ans,m,h,l,sum:longint;x,y:array[0..100,1..3]of longint;
a:array[0..50,1..4]of longint;
p:array[1..101,1..101]of boolean;
b:array[0..101,0..101,1..4]of boolean;
f:array[1..4,1..2]of longint=((-1,0),(1,0),(0,1),(0,-1));
procedure qsortx(l,r:longint);
var
i,j,key:longint;
begin
if l>r then exit;
i:=l;j:=r;
key:=x[(i+j)div 2,1];
while i<j do
begin
while (i<r)and(x[i,1]<key)do inc(i);
while (l<j)and(x[j,1]>key)do dec(j);
if i<=j then
begin
x[0]:=x[i];x[i]:=x[j];x[j]:=x[0];
inc(i);dec(j);
end;
end;
qsortx(l,j);
qsortx(i,r);
end;
procedure qsorty(l,r:longint);
var
i,j,key:longint;
begin
if l>r then exit;
i:=l;j:=r;
key:=y[(i+j)div 2,1];
while i<j do
begin
while (i<r)and(y[i,1]<key)do inc(i);
while (l<j)and(y[j,1]>key)do dec(j);
if i<=j then
begin
y[0]:=y[i];y[i]:=y[j];y[j]:=y[0];
inc(i);dec(j);
end;
end;
qsorty(l,j);
qsorty(i,r);
end;
procedure dfs(x,y:longint);
var
i,x1,y1:longint;
begin
inc(sum);
p[x,y]:=false;
for i:=1 to 4 do
begin
x1:=x+f[i,1];y1:=y+f[i,2];
if (x1<1)or(x1>h+1)or(y1<1)or(y1>l+1)then continue;
if b[x,y,i] and p[x1,y1] then dfs(x1,y1);
end;
end;
begin
// assign(input,'regions.in');reset(input);
// assign(output,'regions.out');rewrite(output);
readln(n);
for i:=1 to n do
begin
read(x[i,1],y[i,1],x[i+n,1],y[i+n,1]);
x[i,2]:=i;x[i,3]:=1;y[i,2]:=i;y[i,3]:=2;
x[i+n,2]:=i;x[i+n,3]:=3;y[i+n,2]:=i;y[i+n,3]:=4;
end;
qsortx(1,n*2);
qsorty(1,n*2);
x[0,1]:=-1;y[0,1]:=-1;h:=0;l:=0;
for i:=1 to n*2 do
begin
if x[i,1]<>x[i-1,1] then inc(h);
a[x[i,2],x[i,3]]:=h;
if y[i,1]<>y[i-1,1] then inc(l);
a[y[i,2],y[i,3]]:=l;
end;
fillchar(b,sizeof(b),true);
for i:=1 to n do
begin
for j:=a[i,1]+1 to a[i,3] do
begin
b[j,a[i,2],3]:=false;
b[j,a[i,2]+1,4]:=false;
b[j,a[i,4],3]:=false;
b[j,a[i,4]+1,4]:=false;
end;
for j:=a[i,4]+1 to a[i,2] do
begin
b[a[i,1],j,2]:=false;
b[a[i,1]+1,j,1]:=false;
b[a[i,3],j,2]:=false;
b[a[i,3]+1,j,1]:=false;
end;
end;
sum:=0;
fillchar(p,sizeof(p),true);
while sum<h*l do
begin
for i:=1 to h do
for j:=1 to l do
if p[i,j] then
begin
inc(ans);
dfs(i,j);
end;
end;
writeln(ans);
// close(input);
// close(output);
End.
0 0
- 未完成题目
- 未完成题目
- 未完成题目
- 未完成题目
- 未完成题目
- 未完成题目
- LeetCode || 未完成的题目
- 未完成的题目
- 未完成需要一直想的题目
- SDKD Single training #2未完成题目
- SDKD Single training #4未完成题目
- SDKD Single training #6未完成题目
- SDKD Single training #8未完成题目
- SDKD Single training #10未完成题目
- 一个跳舞题目的Haskell解答[未完成]
- 未完成
- 未完成
- 未完成
- hdu 4374 One hundred layer (DP+单调队列)@
- 《哲学家们都干了些什么》读书笔记
- 有序数列中找特定数
- 《effective c++》条款二:尽量以enum,const,inline替换#define
- 第七章-更加抽象——python基础教程(第二版)笔记
- 未完成题目
- 八卦基督教和穆斯林(转)
- python3 ORM重难点
- UVA-10892 LCM Cardinality
- 【VS2013】目录结构,文件的组成结构
- 上手LaTeX-基本文档结构
- Spring 入门 上 (xml 配置方式)
- Ubuntu下配置Anaconda
- 透光软膜规格尺寸