【BZOJ】2655: calc 动态规划+拉格朗日插值
生活随笔
收集整理的這篇文章主要介紹了
【BZOJ】2655: calc 动态规划+拉格朗日插值
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
【題意】一個序列$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)。
?
轉載于:https://www.cnblogs.com/onioncyc/p/8886225.html
總結
以上是生活随笔為你收集整理的【BZOJ】2655: calc 动态规划+拉格朗日插值的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: opatch更新
- 下一篇: Vue-router(二) 子路由(嵌套