# POJ 3348 （凸包面积）

#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <cstdlib>
using namespace std;

struct POINT
{
int x,y;
double angle;
}point[10010],stack[10010];
int n, top;
typedef struct POINT Point;

//欧氏距离
double Distance(Point p1, Point p2)
{
return sqrt((double)((p1.x - p2.x) * (p1.x - p2.x) + (p1.y - p2.y) * (p1.y - p2.y)));
}

//叉积 op_sp × op_ep
double multily(Point sp, Point ep, Point op)
{
return (double)((sp.x - op.x) * (ep.y - op.y) - (ep.x - op.x) * (sp.y - op.y));
}

//比较函数从小到大
int cmp(const void *a, const void *b)
{
Point *c = (Point *)a;
Point *d = (Point *)b;
if (c->angle > d->angle)
{
return 1;
}
else if(c->angle < d->angle)
{
return -1;
}
else
return (c->x * c->x + c->y * c->y) < (d->x * d->x + d->y * d->y) ? -1 : 1;
}

//求凸包
void Graham_scan()
{
int i;
stack[0] = point[0];
stack[1] = point[1];
stack[2] = point[2];
for (i = 3; i < n; ++ i)
{
while (multily(point[i], stack[top], stack[top - 1]) > 0)
{
top --;
}
stack[++ top] = point[i];
}
}

//求出凸包的面积
double getArea1()
{
double sum = 0.0;
int i;
for (i = 0; i <= top; ++ i)
{
sum += (double)(stack[i].x * stack[(i + 1) % (top + 1)].y - stack[i].y * stack[(i + 1) % (top + 1)].x);
}
return sum / 2.0;
}

int main()
{
double area1;
int i, k;

while(scanf("%d", &n) != EOF)
{
top = 2;
k = 0;

for (i = 0; i < n; ++ i)
{
scanf("%d %d", &point[i].x, &point[i].y);
}
for (i = 1; i < n; ++ i)
{
if (point[i].y < point[k].y || (point[i].y == point[k].y && point[i].x < point[k].x))
{
k = i;
}
}
if (k)
{
Point tmp = point[0];
point[0] = point[k];
point[k] = tmp;
}

for (i = 1; i < n; ++ i)
{
point[i].angle = atan2((double)(point[i].y - point[0].y), (double)(point[i].x - point[0].x));
}
qsort(point + 1, n - 1, sizeof(point[0]),cmp);
Graham_scan();

area1 = fabs(getArea1());
printf("%d\n", (int)(area1/50.0));

}
return 0;
}


• 本文已收录于以下专栏：

## POJ 3348 Cows (凸包面积)

POJ 3348 Cows (凸包面积)

## POJ 3348 Cows （凸包+多边形面积）

http://poj.org/problem?id=3348 大意：用已有的树围成最大的牧场来养牛，每头牛生活至少需要50平方米。求出能养多少头？ 听说此题不难，然而我因为打错了一个变量看了一晚上...

## POJ 3348 Cows (凸包面积)

http://poj.org/problem?id=3348 水。 完整代码： /*0ms,680KB*/ #include #include #include using namespac...

## POJ 3348 Cows(凸包面积)

Cows Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 7515   Accepted:...

## poj3348（求凸包的面积）graham算法。

Cows Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 7157   Accepted:...
• modiz
• 2015-03-20 11:58
• 249

## 求凸包面积：poj3348

Cows Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 6299   Accepted: 2880 De...
• modiz
• 2014-05-05 20:25
• 551

## poj 3348 Cows（凸包+叉积求面积）

【题目大意】：给出一个多边形，求其凸包面积，答案/50取整输出 【解题思路】：水题，凸包模版+叉积求多边形面积 【代码】： #include #include #includ...

举报原因： 您举报文章：深度学习：神经网络中的前向传播和反向传播算法推导 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)