a permutation is valid only if |ai — i| != k for all 1<=i<=n. Count the number of valid permutations.
Constraints: 2 ≤ N ≤ 2000
1 ≤ K ≤ N − 1
# | User | Rating |
---|---|---|
1 | tourist | 4009 |
2 | jiangly | 3831 |
3 | Radewoosh | 3646 |
4 | jqdai0815 | 3620 |
4 | Benq | 3620 |
6 | orzdevinwang | 3529 |
7 | ecnerwala | 3446 |
8 | Um_nik | 3396 |
9 | gamegame | 3386 |
10 | ksun48 | 3373 |
# | User | Contrib. |
---|---|---|
1 | cry | 164 |
1 | maomao90 | 164 |
3 | Um_nik | 163 |
4 | atcoder_official | 160 |
5 | -is-this-fft- | 158 |
6 | awoo | 157 |
7 | adamant | 156 |
8 | TheScrasse | 154 |
8 | nor | 154 |
10 | Dominater069 | 153 |
a permutation is valid only if |ai — i| != k for all 1<=i<=n. Count the number of valid permutations.
Constraints: 2 ≤ N ≤ 2000
1 ≤ K ≤ N − 1
Name |
---|
Auto comment: topic has been updated by elizabeth_zou_fanboi (previous revision, new revision, compare).
"how many satisfy |a_i − i| ≠ K"
Could you clarify please?
a permutation is valid only if |ai — i| != k for all 1<=i<=n.Count no of valid permutations.
Step 1: Generate all permutations of length $$$N$$$.
Step 2: Perform a linear scan, adding $$$1$$$ to the result if $$$|a_i - i| \ne k$$$ for all $$$i$$$ from $$$1$$$ to $$$N$$$.
Space complexity is $$$O(N \cdot N!)$$$ and time complexity is $$$O(N \cdot N!)$$$.
I have a solution with inclusion-exclusion.
For some permutation $$$p$$$, let $$$x$$$ be the number of indices $$$i$$$ with $$$|p_i - i| = k$$$.
Let $$$f(i)$$$ be the sum over all permutations of $$$x \choose i$$$. The answer is $$$\sum_{i=0}^{n} (-1)^i f(i)$$$.
To compute $$$f(i)$$$, you can count the number of ways to choose a subset of indices of size $$$i$$$, and assign $$$p_i$$$ values to it such that all indices $$$i$$$ in the subset satisfy $$$|p_i - i| = k$$$, and multiply that by $$$(n - i)!$$$. You can compute a dp for each residue class modulo $$$k$$$, and then merge the answers of each residue class.
Is there a more simple solution?