問題:在若干個點中取四個點,求圍成的四邊形的最大面積。
思路:先求個凸包,n^2 列舉對角線,然後旋轉卡殼o(1) 更新左右邊界即可。
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
typedef
long
long ll;
const
int inf=0x7fffffff;
const
int n =2e3+10;
int n,m,k;
const
double esp =1e-6;
int sgn(double x)
struct point
double x,y;
point(){}
point(double x,double y):x(x),y(y){}
point operator + (point o)
point operator - (point o)
point operator * (double len)
double
operator * (point o)
double
operator / (point o)
double dis()
bool
operator
< (point o)
void out()
}p[n],cv[n];
double det(point a,point b,point c)
double dot(point a,point b,point c)
point rot(point p,double a)
const
double pi = acos(-1.0);
bool cmp(point a,point b)
int graham()
return tot-1;
}int main()
}res/=2;
printf("%.3lf\n",res);
}return
0;}
BZOJ 1069 凸包 旋轉卡殼
在某塊平面土地上有n個點,你可以選擇其中的任意四個點,將這片土地圍起來,當然,你希望這四個點圍成 的多邊形面積最大。第1行乙個正整數n,接下來n行,每行2個數x,y,表示該點的橫座標和縱座標。最大的多邊形面積,答案精確到小數點後3位。50 0 1 01 1 0 10.5 0.5 1.000 資料範圍...
BZOJ 1069 求凸包 旋轉卡殼
思路 求凸包 先按照x軸排個序 從左往右掃一遍 找到上凸殼 用叉積 再從右往左掃一遍 求下凸殼 搞個旋轉卡殼就好啦 嗯 我手懶 用的c complex庫 巨好用!by siriusren include include include using namespace std define cplex...
BZOJ 1069 求凸包 旋轉卡殼
思路 求凸包 先按照x軸排個序 從左往右掃一遍 找到上凸殼 用叉積 再從右往左掃一遍 求下凸殼 搞個旋轉卡殼就好啦 嗯 我手懶 用的c complex庫 巨好用!by siriusren include include include using namespace std define cplex...