Searching for Nessy
The Loch Ness Monsteris
a mysterious and unidentified animal said to inhabit Loch Ness,
Searching for Nessy |
a large deep freshwater loch near the city of Inverness in northern Scotland. Nessie is usually categorized as a type of lake monster.
http://en.wikipedia.org/wiki/Loch_Ness_Monster
In July 2003, the BBC reported an extensive investigation of Loch Ness by a BBC team, using 600 separate sonar beams, found no trace of any ¨sea monster¨ (i.e., any large animal, known or unknown) in the loch. The BBC team concluded that Nessie does not exist. Now we want to repeat the experiment.
Given a grid of n rows and m columns representing the loch, 6n, m10000, find the minimum number s of sonar beams you must put in the square such that we can control every position in the grid, with the following conditions:
- one sonar occupies one position in the grid; the sonar beam controls its own cell and the contiguous cells;
- the border cells do not need to be controlled, because Nessy cannot hide there (she is too big).
Input
The first line of the input contains an integer, t, indicating the number of test cases. For each test case, there is a line with two numbers separated by blanks, 6n, m10000, that is, the size of the grid (n rows and m columns).Output
For each test case, the output should consist of one line showing the minimum number of sonars that verifies the conditions above.Sample Input
3 6 6 7 7 9 13
Sample Output
4 4 12
Cara untuk selesaikan masalah ini adalah dengan melihat kepada sonar beam itu yg mempunyai 3*3. Jadi kita perlu mencari banyak mana sonar beam yang diperlukan untuk memenuhi satu bentuk segi empat tepat tapi tidak kisah jika "border"nya tidak dipenuhi. Kita boleh tengok syarat-syaratnya disini :
- one sonar occupies one position in the grid; the sonar beam controls its own cell and the contiguous cells;
- the border cells do not need to be controlled, because Nessy cannot hide there (she is too big).
Jadi untuk selesaikannya kita perlu bahagikan row/3 dan column/3, tetapi jika ada perpuluhan, abaikan. Kita gunakan integer dalam problem ini. Setelah dibahagikan, kemudian darabkan kedua-dua jawapan tersebut. Cara ini saya dapat dengan brute force. :)
Solution :