Loading [MathJax]/jax/output/HTML-CSS/fonts/TeX/fontdata.js

IATI Juniors Day 1 A, unofficial editorial

Правка en2, от glebustim, 2021-11-26 22:26:00

Problem

We will count the number of bad permutations, at the end we subtract it from n! (modular n! is simple — if n<m, then we count head-on, otherwise we take it equal to 0). We will add numbers to the permutation in order (1,2,...,n). If we add the number i, then we have i insertion options, since there are i1 numbers in the permutation now. A pair of neighboring elements is called good if it meets the requirement from the statement (x and x+1). Now let k be the number of good pairs in the permutation. If we insert i between the indices of a good pair, then their number will decrease by 1, if we insert it after the number i1, then it will increase by 1, otherwise it will not change. This means that to increase the number of good pairs by 1 we have a 1 insertion option, to decrease by 1 there are k options, if we do not change anything there are nk1 options. After n insertions, we want to get the number of good pairs equal to 0, so the increases and decreases are split into pairs. We want to find the number of all correct variants of insertions, if we do not have any increases this number is (n1)! (from number of not changing options). Consider the first increase, let it be for the number x. Before it, there were 0 pairs, so the number of permutations is equal to (k2)! (according to the number of insertion options that do not change anything). We have a 1 option for this insert. Note that for the next insertion (if it does not change) we will have k1 options, for the second after us there will be k options, and so on, that is, we continued to accumulate the factorial. Consider a pairwise decrease (just this pair was removed), let it be at the moment y. We will only have the 1 insert option since we are deleting a specific pair. Note that due to the presence of a pair (we assume that there is only one, for a larger number, the proof is obviously constructed in the same way, we only need to carefully take into account that there will be other deletions) before deleting it, we had y3 options on the previous insert, 1 on the current one, and on the next there will already be y, that is, the factors y2 and y1 have been removed. We are looking for the sum over all variants of the remaining product after some set of deletions of pairs of consecutive numbers. Since before y there is a y1 number, and any of them could be paired with y, then products without y2 and y1 will be counted y1 times, that is, we just removed y2. Thus, we have reduced the problem to the fact that we can remove any subset of factors from (n1)!, while we cannot remove two consecutive numbers (pairs y2,y1 cannot intersect in different y), you need to find the sum over all the products after deletions. This is easily done using DP (dp0=dp1=1, dpi=dpi2(i1)+dpi1i, the answer is dpn1) in O(n) and earns 77 points. Now note that after m the modulo remainders are looped. We will divide the old dp into dp1 (dp1ii must be deleted) and dp2 (dp2ii can be deleted or not deleted), we will calculate the values ​​of DP from 0 to m. dp1i=dp2i2(i1), dp2i=dp2i1i+dp1i. Note that all terms in which one of m,2m,... is not removed are equal to 0 and do not affect the sum. It is not hard to prove that then the answer to the problem is (dp1_m)^{\frac{n}{m}} * dp2_{n\pmod{m}}. Using binary exponentiation, we get a O(m + log_2(\frac{n}{m})) solution, which gains 100 points. All formulas in the solution were required to be taken modulo m.

PS: My proof seems to me too complicated, it seems that ShinigamiCHOP has a simpler proof.

История

 
 
 
 
Правки
 
 
  Rev. Язык Кто Когда Δ Комментарий
en2 Английский glebustim 2021-11-26 22:26:00 330
ru4 Русский glebustim 2021-11-26 22:22:02 240
en1 Английский glebustim 2021-11-26 22:18:18 3911 Initial revision for English translation
ru3 Русский glebustim 2021-11-26 22:05:26 3473 Мелкая правка: 'sharing)\nБудем сч' -> 'sharing)\n\nБудем сч' (опубликовано)
ru2 Русский glebustim 2021-11-26 20:57:31 126
ru1 Русский glebustim 2021-11-26 20:38:22 134 Первая редакция (сохранено в черновиках)