POJ 2900 Griddy Hobby

Griddy Hobby
Time Limit: 1000MS   Memory Limit: 65536K
Total Submissions: 414   Accepted: 146

Description

Attending a boring weekly session, our professor started drawing on a grid in a page of his calendar. He started at a boundary grid point P; note that P is a corner of one or two grid cells. He drew a diameter of one of those cells and continued on a straight line until reaching point Q on another edge of the grid. Then he started another line from Q, perpendicular to the line PQ until hitting another edge at point R. He kept drawing lines as above, until he could not draw a new line, either because a perpendicular line would not start with a cell diameter or it would fall on an already drawn line. Then he was puzzling how he would be able to count the number of minimal rectangles he has created on the grid. At this time, the chair of the session noticed him and asked him what he was doing. "Sorry, I was designing a problem for the ACM-ICPC Tehran site," he said.

You are to write a program to, given the dimensions R and C of a grid, the coordinates x and y of a point P on one of the edges of the grid, and the direction (up, left), (down, left), (up, right), or (down, right) of the first line, help the professor to find out the number of minimal rectangles.

Input

The input file contains multiple test cases. The first line of the input, contains t, the number of test cases that follow. Each of the following t blocks, describes a test case.

The first line of each block, contains two positive integers R and C, which are the number of horizontal and vertical gridlines, respectively (2 <= R,C <= 1000). The coordinates of the starting point comes on the next line, as two positive integers y and x, (1 <= y <= R, 1 <= x <= C ); for the upper-left point of the grid, we have x = y = 1. The third line of each test case, contains a two-character code which is one of the following:
  • "DR", the first move is in the down-right direction,
  • "DL", the first move is in the down-left direction,
  • "UL", the first move is in the up-left direction,
  • "UR", the first move is in the up-right direction.

Output

For each test case, output one line containing the number of non-overlapping rectangles formed.

Sample Input

2
4 5
2 1
DR
4 5
4 1
UR

Sample Output

1
3

Source

 

/*

Keep fighting.

計算幾何題,仔細思考不難發現,所有直線交點(轉折點除外,即反射點),所有當前

新生成的直線與其相鄰直線外所有直線交點的個數和即爲所求,所以在模擬過程中可以

存儲所有的直線當處理某一條直線時,只需遍歷所有已經生成的直線(其相鄰直線除外)

統計交點個數即可。終止條件的判斷用了個技巧,每個點都有1,2,3,4四個方向,如果

有哪個點的方向被重複或者到底矩形的四個頂點則訪問終止

*/

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章