算法基础课-动态规划-区间dp-AcWing 282. 石子合并:区间dp
生活随笔
收集整理的這篇文章主要介紹了
算法基础课-动态规划-区间dp-AcWing 282. 石子合并:区间dp
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
文章目錄
- 題目分析
- 題目鏈接
題目分析
只能合并相鄰兩堆。求體力最小值
數(shù)據(jù)比較弱,最多300堆,每堆重量不超過1000。
狀態(tài)表示
f[i][j]表示合并區(qū)間[i,j]需要的最小體力
狀態(tài)轉(zhuǎn)移
把區(qū)間[i,j]分成[i,k] 和[k+1,j]兩部分,由于合并這兩部分是獨(dú)立的,一定是兩堆體力都是最小值,現(xiàn)在我們回看 f[i,j]的定義,對于區(qū)間[i,k] 和[k+1,j],合并的體力消耗就是f[i][k] 和 f[k+1][j]嘛
最后把[i,k] 和[k+1,j]這兩個區(qū)間的最終結(jié)果合并即可,這個結(jié)果是[i,j]中所有數(shù)據(jù)求和,可以用前綴和來優(yōu)化 sum[j]-sum[i-1]
狀態(tài)轉(zhuǎn)移方程為
f[i][j]=min(f[i][j],f[i][k]+f[k+1][j]+sum[j]?sum[i?1])f[i][j]=min(f[i][j],f[i][k]+f[k+1][j]+sum[j]-sum[i-1])f[i][j]=min(f[i][j],f[i][k]+f[k+1][j]+sum[j]?sum[i?1])
ac代碼
題目鏈接
石子合并
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的算法基础课-动态规划-区间dp-AcWing 282. 石子合并:区间dp的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。