乙個地板被若干磚所覆蓋。現在請你判斷,這些磚是否恰好不重複,不遺漏的恰好覆蓋了整個地板。
第一行為乙個整數n,表示有n組測試資料。
每組測試資料第一行是兩個數l, w,表示地板的長和寬(不超過40000)。
第二行是乙個數t,表示有t塊磚(1<=t<=400)。
下面t行每行是四個數,xl,yl,xh,yh,其中(xl,yl)是磚的左下角座標,(xh,yh)是磚的右上角座標。
每組資料輸出包含一行。
如果輸入中磚有交叉覆蓋,則輸出」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].xand (left[j].xand (left[i].yand (left[j].ythen flag:=false;
ifnot 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.
計算星期幾
題目描述 假設今天是星期日,那麼過abab天之後是星期幾?輸入 兩個正整數aa,bb,中間用單個空格隔開。0 輸出 乙個字串,代表過abab天之後是星期幾。其中,mondaymonday是星期一,tuesdaytuesday是星期二,wednesdaywednesday是星期三,thursdayth...
sql 計算星期幾
1.獲取指定日期的星期幾?select datename weekday,你所要計算的時間 輸出的格式為 星期幾 datename param,date param是指定要返回日期部分的引數,包括下面幾種 year yy,yyyy quarter qq,q month mm,m dayofyear ...
日期計算星期幾
日期 月份 年份 就可以秒算任意年份任意日期的星期數 方法1 日期 指的是日期數,如3月18號,日期 為18。4月7號,日期 為7。2 月份 需要小小記憶 五月 是 0 八月 是 1 二月 三月 十一月 是 2 六月 是 3 九月 十二月 是4 四月 七月 是5 一月 十月 是 6 如果遇到閏年 則...