石子合併 四邊形不等式優化

2021-07-27 05:17:22 字數 701 閱讀 7602

**藍橋杯:演算法提高 石子合併

很明顯的區間dp,d(i, j)表示取第i堆到第j堆石子最少花費,轉移方程d(i, j) = min(d(i, k) + d(k+1, j)) +  sum[j] - sum[i].

四邊形a <= b < c <= d,有w(b, c) <= w(a, d)滿足決策單調性 .  且w(a, c) + w(b, d) <= w(b, c) + w(a, d)滿足四邊形不等式 .

ac**:

#include#includeusing namespace std;

const int inf = 1 << 30;

const int maxn = 1000 + 5;

int dp[maxn][maxn], s[maxn][maxn], a[maxn], sum[maxn];

//四邊形不等式優化

int solve(int n)

for(int l = 2; l <= n; ++l)

}} }

return dp[1][n];

}int main()

printf("%d\n", solve(n));

} return 0;

}

如有不當之處歡迎指出!

合併石子 四邊形不等式優化

有一排石子,共n 堆。現要將石子有次序地合併成一堆。規定每次只能選相鄰的2 堆石子合併成新的一堆,並將新的一堆石子數記為該次合併的得分。試設計乙個演算法,計算出將n堆石子合併成一堆的最小得分。首先由直接動態規劃的方法來做,即 for int i 1 i n i for int j i j n j f...

四邊形不等式優化石子合併

關於四邊形不等式或石子合併的資料。網上有很多。但有不少都是語焉不詳,直接拋給你幾個結論,讓人很難理解。這篇文章將以石子合併為例。證明關於四邊形不等式的一些結論。算是乙個溫習。題面 在乙個操場上擺放著一排n n 20 堆石子。現要將石子有次序地合併成一堆。規定每次只能選相鄰的2堆石子合併成新的一堆,並...

四邊形不等式優化

先占個坑,準備學習一把運籌學,好像裡面很多最優化的內容都是和演算法設計相關聯的問題 下面內容 發現了一篇更好的部落格,粘上去,粘上去。簡介 給出乙個長度為l的木棍,以及n個切割點 要求切割成n 1段,每切一次花費都是原始的木棍長度 求最小花費 分析 實際上我們可以看做是n 1個物品 這和能量項鍊是一...