/*
簡單學習了凸包,基本照著**抄
凸包好像就是排序後跑乙個polygon函式,就能得到乙個凸包了
原理的話用平面直角座標系的斜率理解
凸包之後,圖上的點被排序成順時針排列的點
此時就是區間dp的思路了
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
#define inf (1000000007)
const
int maxn = 300 + 5;
struct point
p[maxn], sta[maxn];
bool cmp(point a, point b)
int n, mod;
int valid(point a, point b, point c)
int polygon()
int temp = cnt;
for(int i = n - 2 ; i >= 0 ; i--)
return cnt;
}int cost[maxn][maxn];
int dp[maxn][maxn];
int cal(point a, point b)
int main()
memset(cost, 0, sizeof(cost));
for(int i = 1 ; i <= n ; i++)
for(int i = n ; i >= 1 ; i--)
}printf("%d\n", dp[1][n]);}}
return
0;}
zoj 3537 區間dp 計算幾何
題意 給定n個點的座標,先問這些點是否能組成乙個凸包,如果是凸包,問用不相交的線來切這個凸包使得凸包只由三角形組成,根據costi,j xi xj yi yj p算切線的費用,問最少的切割費用。題解 點我 2015 07 20 專題複習 稍微修改了一下,順便發現題號寫錯了 1 include2 in...
zoj 3537 Cake (凸包 最優三角剖分)
題目鏈結 這道題目是一道最優三角剖分的題目,其實也是一種區間dp裡的一種應用,思路也很簡單。這道題目還需要先判斷是不是凸包,這裡其實主要想記錄一下凸包模板 include include include include include using namespace std const double...
凸包 (簡單概念)
這裡先介紹點概念 一般是點集覆蓋問題 輸入各個點的座標 1.將各點排序 必須的 為保證形成圈,把 p0 在次放在點表的尾 部 2.準備堆疊 建立堆疊 s,棧指標設為t,將0 1 2 三個點壓入堆疊 s 3.對於下乙個點 i 只要 s t 1 s t i不做左轉 就反覆退棧 將 i壓入堆疊 s 4.堆...