題意:逆時針給一個凸包的n(n<=200)個頂點坐標,求一個最短哈密頓路徑的長度。
解法:求最短哈密頓本身是一個NP問題,但是因為是凸包上,可以利用這個做;有一個性質:凸包上的最短哈密頓路徑不會出現交叉。所以可以看出來從一點出發,他要麼和順時針相鄰點連接,要麼和逆時針相鄰點相連接;通過這個性質可以通過dp做:
ans[i][j][0]表示i開始,往後j的點最短路徑長度,ans[i][j][0]表示i開始,往前j的點最短路徑長度;
轉移方程見代碼:有了轉移方程枚舉第一個起始位置就行,復雜度n^3.
/******************************************************
* @author:xiefubao
*******************************************************/
#pragma comment(linker, /STACK:102400000,102400000)
#include
#include
#include
#include
#include
#include
#include
#include
#include