下载此文档

1457土地划分【SGOI-12】.doc


文档分类:建筑/环境 | 页数:约9页 举报非法文档有奖
1/9
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/9 下载此文档
文档列表 文档介绍
土地划分【SGOI-12】
Time Limit:10000MS  Memory Limit:65536K
Total Submit:0 Accepted:0
Description
土地划分



Input
Output
Sample Input
12
10 41 15 41
15 41 20 41
10 36 15 36
15 36 17 36
10 31 15 31
15 31 20 31
10 41 10 36
10 36 10 31
15 41 17 38
17 38 17 36
15 36 15 31
20 41 20 31
Sample Output
4 1
6 1
7 1
Source
题意描述
农场主拥有一块土地,土地中有篱笆隔开,要我们求出每类土地包含的线段数以及该类土地的数目。
注意:。

算法分析
由于有注意事项1与2的提示,我们很容易设计如下算法:
,
,所以我们可以从外轮廓的每一条边开始,按顺时针方向搜索每个小多边形。注意:有可能一个小多边形与土地轮廓的两条或两条以上的边重合,所以搜索时要注意判重。
题目构图:
程序:
var i,j,n,m,x1,y1,x2,y2,i1,i2,la:longint;
tot,a,b,x,y:array[0..801] of longint;
use:array[1..800] of boolean;
g:array[0..801,0..801] of integer;
function get(xx,yy:longint):longint; {给每个坐标进行编号}
var i:longint;
begin
i:=1;
while (i<=n) and ((x[i]<>xx) or (y[i]<>yy)) do inc(i);
if i>n then begin
inc(n); x[n]:=xx; y[n]:=yy;
end;
exit(i);
end;
function ni(x1,y1,x2,y2,x3,y3:longint):boolean;{对判断点x3在向量x1x2的顺(true)或逆方向(false),和在同一直线上(false)}
begin
if (x2-x1)*(y3-y1)-(y2-y1)*(x3-x1)>0 then exit(true)
else exit(false);
end;
procedure mark; {进行最外围的线段的记录}
var i,k,first,last,now:longint;
can:boolean;
begin
fillchar(a,sizeof(a),0);
k:=1;
for i:=2 to n do
if (y[k]>y[i]) or ((x[k]>x[i]) and (y[k]=y[i])) then
k:=i; {找出在左下角的点}
x[0]:=x[k]-1; y[0]:=y[k];

1457土地划分【SGOI-12】 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数9
  • 收藏数0 收藏
  • 顶次数0
  • 上传人木易东
  • 文件大小73 KB
  • 时间2018-08-08