码迷,mamicode.com
首页 > 其他好文 > 详细

【BZOJ】2655: calc 动态规划+拉格朗日插值

时间:2018-04-19 21:52:21      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:csdn   http   复杂   bsp   下标   个数   blog   题解   动态   

【题意】一个序列$a_1,...,a_n$合法当且仅当它们都是[1,A]中的数字且互不相同,一个序列的价值定义为数字的乘积,求所有序列的价值和。n<=500,A<=10^9,n+1<A<mod<=10^9,mod是素数。

【算法】动态规划+拉格朗日插值

【题解】这道题每个数字的贡献和序列选了的数字积关系密切,所以不能从序列角度考虑(和具体数字关系不大)。

设$f_{n,m}$表示前n个数字(值域)中取m个数字的答案,那么枚举取或不取数字n,取n时乘n且有j个位置可以插入,即:

$$f_{i,j}=f_{i-1,j}+f_{i-1,j-1}*i*j$$

答案是$f_{A,n}$。这里最后再乘n!应该也是可以的,但是就不能插值了233。

打表法找规律见:【BZOJ2655】calc DP 数学 拉格朗日插值 by yww

观察法:假装正经地观察一下这个式子,下标j从j-1转移并乘上j,那么每次就多一个次数。但为什么最后要翻个倍就不是很清楚了。

不过拉格朗日插值插多了也没关系,所以可以通过对拍尝试小数据来试出最小插值。

复杂度O(n^2+n)。

 

【BZOJ】2655: calc 动态规划+拉格朗日插值

标签:csdn   http   复杂   bsp   下标   个数   blog   题解   动态   

原文地址:https://www.cnblogs.com/onioncyc/p/8886225.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!