最有三角形划分,凸包不会也抄了别人的凸包代码一直wa不明觉厉,不过dp算是想对了;
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<iostream>
#include<math.h>
using namespace std;
typedef long long lld;
#define oo 0x3f3f3f3f
#define mod 1000000007
#define maxn 300+5
int dp[maxn][maxn];
int cost[maxn][maxn];
struct Node
{
int x,y;
}a[maxn];
int n,p,c;
Node save[maxn];
int Cost(int i,int j)
{
return (abs(save[i].x+save[j].x)*abs(save[i].y+save[j].y))%p;
}
//以下是凸包的代码
//-------------------------------------------------------------------------
bool cmp(const Node& t1,const Node& t2)
{
if(t1.y == t2.y)return t1.x < t2.x;
return t1.y < t2.y;
}
int xmult(Node p1,Node p2,Node p0)
{
return (p1.x-p0.x)*(p2.y-p0.y)-(p2.x-p0.x)*(p1.y-p0.y);
}
int Graham(int n)
{
int i;
sort(a+1,a+1+n,cmp);
save[1] = a[1];
save[2] = a[2];
int top = 2;
for(i =