[解题报告]10963 - The Swallowing Ground
题目大意
题目原文:http://uva.onlinejudge.org/external/109/10963.pdf
背景:
现在缺德的人已经被惩罚了,但是仍然还有一些事情要做。举例来说,地面需要自行接合才行。(要不然的话,好人可是会不小心掉入地狱的,这不太好。)
地面藉由崩塌的方式来将 Don Giovanni 吞进去:有一部分的地面崩塌──落入了地狱,而且崩塌造成的裂口将 Don Giovanni 吞了进去。现在唯一能修复地面的方法,就是滑动地面来接合裂口。这里有个范例,左边的图(从空中鸟瞰图)是一个有着深谷的地面。假设地面向南北无限延伸,而东西两端都紧邻着另外的地面,但是之间有可滑动的接缝。如此一来,北边的陆块可以向南滑动,南边的陆块也可以向北滑动。右边的图是滑动的结果,而裂口接合了。
这里有另外一个范例。以左边的图来说,图中的裂口不能藉由滑动来接合。右边的图是尽力滑动之后的结果,但是仍然有个洞。
请写一只程序来判断裂口能不能接合。地面由方格图组成,其中有好几个方格是崩塌造成的洞,而裂口便是由这些洞组成的.
输入:
输入的第一列有一个正整数,代表接下来有多少组测试数据。
每笔测试数据的第一行都包含一个整数 W,代表直行的数目。接下来的 W 行都会有两个整数 y1、y2(-100 <= y1, y2 <= 100),分别代表着每个直行当中,裂口最北端和最南端的Y坐标位置。输入格式请参考 Sample Input。
测试数据一定会是个有效的裂口:所有的洞刚好将地面分成南北两块,陆块中不会有洞,也不会有孤立的陆块在裂口之中。
输出:
对于每组测试数据,如果裂口接合就输出一行 "Yes",否则就输出一行 "No"。每笔输出之间请空一行,请参考Sample Output。
算法:
水题,直接上代码。
代码:
这里附上我的代码,你可以去这里提交你的代码验证你的代码是否正确。
View Code
1 #include<stdio.h> 2 int main(void) 3 { 4 int t,i,flag,m,n,p; 5 int y1[100],y2[100]; 6 scanf("%d",&p); 7 while(p--) 8 { 9 flag=1; 10 scanf("%d",&t); 11 scanf("%d%d",&y1[0],&y2[0]); 12 m=y1[0]-y2[0]; 13 for(i=1;i<t;i++) 14 { 15 scanf("%d%d",&y1[i],&y2[i]); 16 n=y1[i]-y2[i]; 17 if(n!=m) 18 flag=0; 19 } 20 if(flag==1) 21 puts("yes"); 22 else 23 puts("no"); 24 if(p) 25 puts(""); 26 } 27 return 0; 28 }