Input poj 1262 计算几何
2016-09-03 06:59
141 查看
Problem
一个地板被若干砖所覆盖。现在请你判断,这些砖是否恰好不重复,不遗漏的恰好覆盖了整个地板。Input
第一行为一个整数N,表示有N组测试数据。每组测试数据第一行是两个数l, w,表示地板的长和宽(不超过40000)。
第二行是一个数t,表示有t块砖(1<=t<=400)。
下面t行每行是四个数,xl,yl,xh,yh,其中(xl,yl)是砖的左下角坐标,(xh,yh)是砖的右上角坐标。
Output
每组数据输出包含一行。如果输入中砖有交叉覆盖,则输出”NONDISJOINT”
否则如果有砖超出了地板,则输出”NONCONTAINED”
否则如果有部分地板没有被覆盖,则输出”NONCOVERING”
否则输出”OK”
分析
本题的关键盘是判断是否有交叉覆盖,判断标准如下: r.left r.right r.up r.down 表示一个矩形r的左边\右边\上边\下边 四个判断(r1.left < r2.right) and(r2.left < r1.right) and (r1.up < r2.down) and (r2.up < r1.down) 如果答案为true,那就交叉了。
代码
const maxn=1000; type arr=record x,y:longint; end; var n,m:longint; l,w:longint; i,j,k:longint; left,right:array[1..maxn] of arr; boom:boolean; area:longint; function judge(x,y:longint):boolean; begin judge:=true; if (x<0) or (x>l) or (y<0) or (y>w) then exit(false); end; procedure init; var i,j,k:longint; begin readln(l,w); readln(m); boom:=true; area:=0; fillchar(left,sizeof(left),0); fillchar(right,sizeof(right),0); for i:=1 to m do begin read(left[i].x,left[i].y); readln(right[i].x,right[i].y); area:=area+(right[i].x-left[i].x)*(right[i].y-left[i].y); boom:=judge(left[i].x,left[i].y) and judge(right[i].x,right[i].y); end; end; procedure main; var i,j,k:longint; flag:boolean; begin flag:=true; for i:=1 to m do for j:=i+1 to m do if (left[i].x<right[j].x) and (left[j].x<right[i].x) and (left[i].y<right[j].y) and (left[j].y<right[i].y) then flag:=false; if not flag then begin writeln('NONDISJOINT'); exit; end; if boom=false then begin writeln('NONCONTAINED'); exit; end; if area<>l*w then begin writeln('NONCOVERING'); exit; end; writeln('OK'); end; begin readln(n); for i:=1 to n do begin init; main; end; end.
相关文章推荐
- Input_poj1262_计算几何
- 【UVa 11178】Morley's Theorem (计算几何)
- POJ 1566 The Doors(计算几何+dp)
- 1212: [视频]【计算几何】判断线段相交(跨立实验)
- 计算几何
- HDU3365(几何计算)
- hihocoder #1040 矩形判断(计算几何问题 给8个点的坐标,能否成为一个矩形 【模板思路】)
- 计算几何的基础知识 - 概述
- HDU1798 简单高中的计算几何题= =。正余弦定理的综合应用么。。。
- ZOJ 2675 Little Mammoth(计算几何)
- 蓝桥杯 算法提高 12-1三角形 【计算几何_三角形】【全是板子】
- 【转】[专题学习][计算几何]
- POJ 3304 Segments(计算几何)
- 暑假集训-计算几何
- B - Toy Storage(POJ - 2398) 计算几何基础题,比TOYS多了个线段排序
- [UVA]11800-Determine the Shape(计算几何)
- ZOJ3806 二分计算几何eps控制精度
- POJ2318---TOYS (基础计算几何:叉积应用)
- 2015年ALPC暑期专题练习I (计算几何) C
- 玲珑学院 1143 计算几何你瞎暴力【计算几何】【技巧暴力】