POJ 3348 /// 凸包+多边形面积
题目大意:
给定的n个点 能圈出的最大范围中
若每50平方米放一头牛 一共能放多少头
求凸包 答案就是 凸包的面积/50 向下取整
- /// 求多边形面积
// 凹多边形同样适用 因为点积求出的是有向面积- double areaPg()
- {
- double res=;
- for(int i=;i<k-;i++) // 以t[0]为划分顶点
- res+=(t[i]-t[]).det(t[i+]-t[]);
- return res/2.0;
- }
- #include <cstdio>
- #include <algorithm>
- #include <cmath>
- #define INF 0x3f3f3f3f
- using namespace std;
- const double eps=1e-;
- double add(double a,double b) {
- if(abs(a+b)<eps*(abs(a)+abs(b))) return ;
- return a+b;
- }
- struct P {
- double x,y;
- P(){};
- P(double _x,double _y):x(_x),y(_y){};
- P operator - (P p) {
- return P(add(x,-p.x),add(y,-p.y)); }
- P operator + (P p) {
- return P(add(x,p.x),add(y,p.y)); }
- P operator * (double d) {
- return P(x*d,y*d); }
- double dot(P p) {
- return add(x*p.x,y*p.y); }
- double det(P p) {
- return add(x*p.y,-y*p.x); }
- }p[], t[];
- int n, k;
- bool cmp(P a,P b) {
- if(a.x==b.x) return a.y<b.y;
- return a.x<b.x;
- }
- void andrew()
- {
- sort(p,p+n,cmp);
- k=;
- for(int i=;i<n;i++) {
- while(k> && (t[k-]-t[k-]).det(p[i]-t[k-])<)
- k--;
- t[k++]=p[i];
- }
- for(int i=n-,j=k;i>=;i--) {
- while(k>j && (t[k-]-t[k-]).det(p[i]-t[k-])<)
- k--;
- t[k++]=p[i];
- }
- if(n>) k--;
- }
- double areaPg()
- {
- double res=;
- for(int i=;i<k-;i++)
- res+=(t[i]-t[]).det(t[i+]-t[]);
- return res/2.0;
- }
- void solve()
- {
- andrew();
- int ans=areaPg()/;
- printf("%d\n",ans);
- }
- int main()
- {
- while(~scanf("%d",&n)) {
- for(int i=;i<n;i++)
- scanf("%lf%lf",&p[i].x,&p[i].y);
- solve();
- }
- return ;
- }
POJ 3348 /// 凸包+多边形面积的更多相关文章
- Cows - POJ 3348(凸包求面积)
题目大意:利用n棵树当木桩修建牛圈,知道每头牛需要50平的生存空间,求最多能放养多少头牛. 分析:赤裸裸的求凸包然后计算凸包的面积. 代码如下: --------------------------- ...
- poj 1654 Area 多边形面积
/* poj 1654 Area 多边形面积 题目意思很简单,但是1000000的point开不了 */ #include<stdio.h> #include<math.h> ...
- poj3348 Cows 凸包+多边形面积 水题
/* poj3348 Cows 凸包+多边形面积 水题 floor向下取整,返回的是double */ #include<stdio.h> #include<math.h> # ...
- POJ 3348 Cows(凸包+多边形面积)
Description Your friend to the south is interested in building fences and turning plowshares into sw ...
- poj 3348--Cows(凸包求面积)
链接:http://poj.org/problem?id=3348 Cows Time Limit: 2000MS Memory Limit: 65536K Total Submissions: ...
- 简单几何(向量旋转+凸包+多边形面积) UVA 10652 Board Wrapping
题目传送门 题意:告诉若干个矩形的信息,问他们在凸多边形中所占的面积比例 分析:训练指南P272,矩形面积长*宽,只要计算出所有的点,用凸包后再求多边形面积.已知矩形的中心,向量在原点参考点再旋转,角 ...
- 简单几何(凸包+多边形面积) POJ 3348 Cows
题目传送门 题意:求凸包 + (int)求面积 / 50 /************************************************ * Author :Running_Tim ...
- POJ 3348:Cows 凸包+多边形面积
Cows Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 7739 Accepted: 3507 Description ...
- poj 3348(凸包面积)
Cows Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 8063 Accepted: 3651 Description ...
随机推荐
- chkconfig 与 systemctl
chkconfig命令 主要用来更新(启动或停止)和查询系统服务(service)的运行级信息,用于维护/etc/rc[0-6].d目录的命令行工具. chkconfig -–add httpd 增加 ...
- delphi JPG转为BMP存入数据库
delphi JPG转为BMP存入数据库 必须在uses中引用JPEG procedure TForm1.BitBtn3Click(Sender: TObject);varjpg:TJPEGim ...
- thinkphp 模型调试
调试执行的SQL语句 在模型操作中 ,为了更好的查明错误,经常需要查看下最近使用的SQL语句,我们可以用getLastsql方法来输出上次执行的sql语句.例如: $User = M("Us ...
- thinkphp 动态配置
之前的方式都是通过预先定义配置文件的方式,而在具体的操作方法里面,我们仍然可以对某些参数进行动态配置(或者增加新的配置),主要是指那些还没有被使用的参数. 设置新的值: C('参数名称','新的参数值 ...
- 帝国cms过滤采集内容
在过滤广告正则的[!--ad--]标识处,加上过滤正则即可 https://jingyan.baidu.com/article/c275f6bae3ea0de33d75671c.html
- C/C++:Windows编程—调用DLL程序的2种方法(转载)
文章为转载,原文出处https://blog.csdn.net/qq_29542611/article/details/86618902 前言先简单介绍下DLL.DLL:Dynamic Link Li ...
- docker service 集群创建
docker service create /新建docker集群--name webwork /集群的名称--replicas 3/ 启动3个节点--network my-network/ netw ...
- day27-面向对象进阶
#!/usr/bin/env python # -*- coding:utf-8 -*- # ----------------------------------------------------- ...
- PAT_A1106#Lowest Price in Supply Chain
Source: PAT A1106 Lowest Price in Supply Chain (25 分) Description: A supply chain is a network of re ...
- spark-sql性能优化之——动态实现多个列应用同一个函数
在对一个dataframe的多个列实现应用同一个函数时,是否能动态的指定? 例如: 对A,B,C三列实现分组统计 1.初始化spark,构建DF val spark = SparkSession.bu ...