空間裡有n個點p0,p1,p2... ...,pn-1,你的任務是把他們配成n/2對(n是偶數),使得每個點恰好在乙個點對中。所有點的距離之和應該盡量小。n<=20.
定義狀態d[i][s]為前i個點中,位於集合s的元素兩兩配對的最小距離,則狀態轉移方程就是
d(i,s) = min-)}
其中|pipj|表示兩點之間的距離。邊界是d(-1,s) = 0
**實現:
1for(int i = 0;i < n;i ++)210
}11 }
而另外,狀態i更本就不需要儲存,所以就只需要乙個一維陣列就可以儲存
d(s) = min
1for(int s = 0; s < (1
<)29
for(int j = i+1; j < n; j ++ )if(s && (1
<1013 }
集合上的動態規劃 最優配對問題
此部落格 題目 劉汝佳 演算法競賽入門經典 集合上的動態規劃 最優配對問題 題意 空間裡有n個點p0,p1,pn 1,你的任務是把它們配成n 2對 n是偶數 使得每個點恰好在乙個點對中。所有點對中兩點的距離之和應盡量小。狀態 d i,s 表示把前i個點中,位於集合s中的元素兩兩配對的最小距離和 狀態...
最優配對問題
最優配對問題 空間裡有n個點p0,p1,pn 1,你的任務是把它們配成n 2對 n是偶數 使得每個點恰好在乙個點對中。所有點對中兩點的距離之和應盡量小。1.設d i,s 表示前i個點中,位於集合s中的元素兩兩配對的最小距離和 則狀態轉移方程 d i,s min include include inc...
最優配對問題(集合上的動態規劃) 狀壓DP
題意 給出n個點的空間座標 n為偶數,n 20 把他們配成n 2對,問 怎樣配對才能使點對的距離和最小?題解 設dp s 為 狀態為s s代表著某個子集 時,它的最小距離和。1.對於乙個狀態s,首先要計算它減少兩個點後的狀態的最小距離和,然後當前狀態才能從這些狀態中轉移過來。2.如何轉移 對於狀態s...