您的位置:首页 > 编程语言 > Go语言

[Google Codejam] Round 1A 2016 - Rank and File

2016-04-16 21:05 513 查看
[Problem Description]

Problem

When Sergeant Argus's army assembles for drilling, they stand in the shape of an N by Nsquare grid, with exactly one soldier in each cell. Each soldier has a certain height.
Argus believes that it is important to keep an eye on all of his soldiers at all times. Since he likes to look at the grid from the upper left, he requires that:
Within every row of the grid, the soldiers' heights must be in strictly increasing order, from left to right.
Within every column of the grid, the soldiers' heights must be in strictly increasing order, from top to bottom.
Although no two soldiers in the same row or column may have the same height, it is possible for multiple soldiers in the grid to have the same height.
Since soldiers sometimes train separately with their row or their column, Argus has asked you to make a report consisting of 2*N lists of the soldiers' heights: one representing each row (in left-to-right order) and column
(in top-to-bottom order). As you surveyed the soldiers, you only had small pieces of paper to write on, so you wrote each list on a separate piece of paper. However, on your way back to your office, you were startled by a loud bugle blast and you dropped all
of the pieces of paper, and the wind blew one away before you could recover it! The other pieces of paper are now in no particular order, and you can't even remember which lists represent rows and which represent columns, since you didn't write that down.
You know that Argus will make you do hundreds of push-ups if you give him an incomplete report. Can you figure out what the missing list is?

Input

The first line of the input gives the number of test cases, T. T test cases follow. Each consists of one line with an integer N, followed by 2*N-1 lines of N integers each, representing the lists you have, as described
in the statement. It is guaranteed that these lists represent all but one of the rows and columns from a valid grid, as described in the statement.

Output

For each test case, output one line containing 
Case #x: y
, where 
x
 is
the test case number (starting from 1) and y is a list of N integers in strictly increasing order, representing the missing list.

Limits

1 ≤ T ≤ 50.

1 ≤ all heights ≤ 2500.

The integers on each line will be in strictly increasing order.

It is guaranteed that a unique valid answer exists.

Small dataset

2 ≤ N ≤ 10.

Large dataset

2 ≤ N ≤ 50.

Sample

Input 

 
Output 

 
1
3
1 2 3
2 3 5
3 5 6
2 3 4
1 2 3

Case #1: 3 4 6

In the sample case, the arrangement must be either this:
1 2 3

2 3 4

3 5 6

or this:
1 2 3

2 3 5

3 4 6

In either case, the missing list is 
3 4 6
.

[Problem Analysis]

It is tempting to think it in a rather complicated way. However, the solution is very simple, if you observe a very important property. That is: each soldier
appears exactly twice in your files, once when you record in row and once when you record in column.  So, each number must appear even times in the files. If one file is missed, what happened? If you lost the file recording a row, each number will have appeared
once in the columns. These numbers will appear for odd times! What's more, only these lost numbers appear in odd times! Problem becomes easy, since we just need to find the numbers which appears for odd times in the left files. Remember to sort them before
output! The solution in Python is shown below.

[Problem Solution]

T = int(raw_input())
for t in xrange(1, T+1):
N = int(raw_input())
ls = []
for _ in xrange(2*N-1):
l = [int(i) for i in raw_input().split(' ')]
ls.append(l)
nums = []
for l in ls:
nums += l
c = Counter(nums)
res = []
for i in c:
if c[i] % 2 == 1:
res.append(i)
res.sort()
res = [str(i) for i in res]
res = ' '.join(res)
print 'Case #{}: {}'.format(t, res)
[Comment]
If one way is too long and obstructive, just have a rest and think in another way. There is an Chinese poetry illustrating this quite appropriately: "山重水复疑无路,柳暗花明又一村"是也。

[Source]
https://code.google.com/codejam/contest/4304486/dashboard#s=p1


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  codejam 谷歌 算法