洛谷 p1880 石子合并 [ DP断环成链 ]
https://www.luogu.com.cn/problem/P1880
题意:在一个圆形操场的四周摆放 N 堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分。
试设计出一个算法,计算出将 N 堆石子合并成 1 堆的最小得分和最大得分。
将原有长度复制一份接在后面,然后跑 [1,n] 就可以保证取到所有起点的区间,这样仍可取到环形结构中的所有情况,是等价的。
本题的转移方程: $d[i][j]=max(d[i][k] + d[k+1][j]) + c[i][j]$
max 换成 min 就是最小值的。
1 | const int MAX=100+5; |