当初从30分做到50分后用DP做50分然后WA50分最后终于AC(T^T)
设F[j,i]表示有i个质因数,有j个因数的最小数。
初始化:
F[1,i]=2^(i-1) (i=1~n)
用F[j,i]去维护F[j+1,i*(k+1)] (i=1~n j=1~trunc(ln(i)/ln(2)) k=1~n div i-1 且 F[i,j]>0)
即F[j+1,i*(k+1)]=max(F[j+1,i*(k+1)],F[j,i]*P_j+1^k)
P_i表示第i个质数,开到20就可以了。
100分N=200000
D[i]表示有i个因数时能构成的最小数。
在计算F[j,i]时更新D[i]。
之后从后往前枚举,每找到一个比原最小数小的数,就把该数加进答案序列里。
然后统计范围内的约数国王个数,最后输出序列。
本文介绍了一种使用动态规划(DP)算法解决最小约数国王数问题的方法。通过定义状态F[j,i]为有i个质因数、j个因数的最小数,并给出初始化过程及迭代公式,最终求得目标解。文章还描述了如何更新最小数并统计约数国王个数。
&spm=1001.2101.3001.5002&articleId=52651534&d=1&t=3&u=362aafafe9e24df2954562bb0f857bdb)
3077

被折叠的 条评论
为什么被折叠?



