Submit | All submissions | Best solutions | Back to list |
ASSIGN - Assignments |
Problem
Your task will be to calculate number of different assignments of n different topics to n students such that everybody gets exactly one topic he likes.
Input
First line of input contains number of test cases c (1<=c<=80). Each test case begins with number of students n (1<=n<=20). Each of the next n lines contains n integers describing preferences of one student. 1 at the ith position means that this student likes ith topic, 0 means that he definitely doesn't want to take it.
Output
For each test case output number of different assignments (it will fit in a signed 64-bit integer).
Example
Input: 3 3 1 1 1 1 1 1 1 1 1 11 1 0 0 1 0 0 0 0 0 1 1 1 1 1 1 1 0 1 0 1 0 0 1 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 0 1 0 0 1 1 1 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 1 0 1 1 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 1 1 1 1 1 0 0 0 1 0 1 0 1 1 0 0 0 1 1 1 1 0 0 0 11 0 1 1 1 0 1 0 0 0 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 1 0 0 0 0 0 1 0 0 1 0 1 0 1 0 1 0 1 1 1 0 0 1 0 0 0 0 1 0 1 0 0 1 0 1 1 0 0 0 0 1 1 0 1 0 1 1 1 0 1 1 0 1 0 1 1 0 1 1 0 0 1 0 0 0 1 1 0 1 1 1 1 1 1 0 1 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 1 0 1 Output: 6 7588 7426
Added by: | gawry |
Date: | 2005-10-08 |
Time limit: | 2.997s |
Source limit: | 50000B |
Memory limit: | 1536MB |
Cluster: | Cube (Intel G860) |
Languages: | All except: NODEJS PERL6 VB.NET |
hide comments
|
|||||||||||||
2017-02-24 03:30:41
Wow, AC and #2 time on 1st try :-D Bit operations galore and O(2^N * N), as opposed to O(2^N * N^2). A bit of combinatorics and common sense help a lot in making that solution faster; so does __builtin_popcount. Last edit: 2017-02-24 03:35:22 |
|||||||||||||
2017-02-02 23:26:11
to count no of 1s in mask use __builtin_popcount(mask); |
|||||||||||||
2017-01-18 06:33:35
how people are solving it in 0.15 sec... mine solution dp(top down) took 2.5 secs.... is there any better and optimal method to solve??????/ |
|||||||||||||
2016-11-07 21:31:07
Topdown+bitmasking :-D |
|||||||||||||
2016-10-15 08:20:36
My O(2^n*n) Gets tle Xp for each case lol |
|||||||||||||
2016-10-10 16:49:52 dev
Very Nice DP + BitMasking ! O(2^n * n*n ) will give Tle. |
|||||||||||||
2016-09-22 15:12:53
learned new things :'D |
|||||||||||||
2016-09-21 11:52:19 srinath
Using map gives TLE. Use vector instead. |
|||||||||||||
2016-07-27 15:32:52
@vikikkdi : seri |
|||||||||||||
2016-06-25 06:16:14
can anyone explain me the test cases?? |