UOJ Round总结

#22. 【UR #1】外星人

一开始随便搞出第一问答案,很显然的性质对$x$有变化的$a$一定是递减的,就拿一个桶直接记录可以达到的值

然后我开始想第二问,一开始想直接在这个桶上统计答案,然后发现不行,之后再想,如果利用上面的性质,在选取了一个$a_i leq x$时,会有一段区间的$a$可以随便插入到$a_i$之后,然后就被一些组合数学的细节绕晕,没有想清楚,这一段区间是$(x mod a_i,x]$,并且要在$a_i$中挑一个出来放在最前面,然后会发现$x mod a_i$是一个子问题,搞出来这个合法方案排列数后,将$(x mod a_i,x]$中的数,插入排列中,方案数$(sum[x mod a_i]+1)(sum[x mod a_i]+2)...(sum[x]-1)$,即$frac{sum[x-1]!}{sum[x mod a_i]!}$

那么就设$dp[i]$为当前$x=i$时最大答案,$f[i]$为$x=i$且满足最大答案时的方案数

$dp[i]=max dp[i mod a_j]$  $(a_j leq i)$

然后f[i]由那些可以得到最大答案的$f[i mod a_j]$根据上面的更新得到

代码

原文地址:https://www.cnblogs.com/huangchenyan/p/13841072.html