题意:

  给一些点,求出一个最大的空凸包,这个凸包里没有任何给定点且要求这个凸包面积最大

分析:

  枚举凸包左下角的点,然后dp[i][j]表示凸包的最后两条边是j->i和i->O情况下凸包的面积最大值,这个是O(n^4)的

  可以利用凸性求个前缀和来完成O(1)的转移

  具体看这里:https://blog.csdn.net/nyroro/article/details/45268767

 #include<bits/stdc++.h>
using namespace std;
const int maxn=;
typedef int db;
struct Point
{
/*点类*/
db x,y;
Point(){}
Point(db _x,db _y):x(_x),y(_y){}
void input()
{
scanf("%d%d",&x,&y);
}
Point operator + (const Point &t)const
{
return Point(x+t.x,y+t.y);
}
Point operator - (const Point &t)const
{
return Point(x-t.x,y-t.y);
}
db operator * (const Point &t)const
{
return x*t.y-y*t.x;
}
db len()const
{
return x*x+y*y;
}
bool operator < (const Point &t) const
{
if((*this)*t!=) return (*this)*t>;
return len()<t.len();
}
}p[maxn+],a[maxn+];
int n,m;
int ans;
int dp[maxn+][maxn+],sum[maxn+][maxn+];
void work(int n)
{
memset(dp,,sizeof(dp));
memset(sum,,sizeof(sum));
for(int i=;i<=n;++i)
{
int j=i-;
while(j>=&&a[i]*a[j]==) --j;
bool flag=;
if(j==i-) flag=;
while(j>=)
{
int k=j-;
int res=a[j]*a[i];
while(k>=&&(a[j]-a[i])*(a[k]-a[j])>) --k;
if(k) res+=sum[j][k];
if(flag) dp[i][j]=res;
ans=max(ans,res);
j=k;
}
sum[i][]=dp[i][];
for(int j=;j<i;++j) sum[i][j]=max(dp[i][j],sum[i][j-]);
}
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
for(int i=;i<=n;++i) p[i].input();
ans=;
for(int i=;i<=;++i)
{
m=;
for(int j=;j<=n;++j) if(p[j].y>p[i].y||(p[i].y==p[j].y&&p[j].x>=p[i].x)) a[++m]=p[j]-p[i];
//for(int i=1;i<=m;++i) printf("%d %d\n",a[i].x,a[i].y);
//printf("\n");
sort(a+,a+m+);
//for(int i=1;i<=m;++i) printf("%d %d\n",a[i].x,a[i].y);
work(m);
}
//printf("%d\n",ans);
printf("%.1f\n",1.0*ans/);
}
return ;
}

hdu6219(最大空凸包)的更多相关文章

  1. hdu6219 Empty Convex Polygons (最大空凸包板子

    https://vjudge.net/contest/324256#problem/L 题意:给一堆点,求最大空凸包面积. 思路:枚举凸包左下角点O,dp找出以这个点为起始位置能构成的最大空凸包面积, ...

  2. Game of Taking Stones && POJ1259 /// 最大空凸包 几何+DP

    题目大意: 给定n个点 求出这n个点中最大空凸包的面积 只放个模板 一份模板过两题(滑稽 这个讲解够详细了 https://blog.csdn.net/nyroro/article/details/4 ...

  3. 2017ACM/ICPC亚洲区沈阳站 C Hdu-6219 Empty Convex Polygons 计算几何 最大空凸包

    题面 题意:给你一堆点,求一个最大面积的空凸包,里面没有点. 题解:红书板子,照抄完事,因为题目给的都是整点,所以最后答案一定是.5或者.0结尾,不用对答案多做处理 #include<bits/ ...

  4. POJ1259 The Picnic 最大空凸包问题 DP

    POJ1259 给定平面上100个点 求一个最大的凸包,使得它不包含其中任意点,且凸包的顶点是题目所给的点. 枚举凸包左下角的点,顺时针枚举第二个点, 用opt[i][j]记录 i作为第二个点, 且第 ...

  5. 2017ACM-ICPC沈阳区域赛

    I-Little Boxes[大数] hdu6225  http://acm.hdu.edu.cn/showproblem.php?pid=6225 题意: 就是给四个大数,输出和. 思路: java ...

  6. 2017ACM/ICPC亚洲区沈阳站(部分解题报告)

    HDU 6225 Little Boxes 题意 计算四个整数的和 解题思路 使用Java大整数 import java.math.BigInteger; import java.util.Scann ...

  7. [poj1113][Wall] (水平序+graham算法 求凸包)

    Description Once upon a time there was a greedy King who ordered his chief Architect to build a wall ...

  8. ZOJ 3871 Convex Hull(计算几何、凸包)

    题意:给n个点,|x[i]|,|y[i]| <= 1e9.求在所有情况下的子集下(子集点数>=3),凸包的面积和. 这题主要有几个方面,一个是凸包的面积,可以直接用线段的有向面积和求得,这 ...

  9. UVALive 2453 Wall (凸包)

    题意:给你一个多边形的城堡(多个点),使用最短周长的城墙将这个城堡围起来并保证城墙的每个点到城堡上的每个点的距离都不小于l 题解:因为两点间的直线一定比折线短,所以这样做 先使用所有点求得一个凸包,接 ...

随机推荐

  1. CUB reduce errorinvalid configuration argument

    解决CUB reduce errorinvalid configuration argument问题 在写TensorFlow代码时遇到报错 CUB reduce errorinvalid confi ...

  2. linux系统装载ELF过程

    参考:程序员的自我修养 fork -->execve() //----kenerl space--------------- sys_execve() /*arch\i386\kernel\pr ...

  3. LeetCode(23)Merge k Sorted Lists

    题目 Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity ...

  4. CodeForce:732B-Cormen — The Best Friend Of a Man

    传送门:http://codeforces.com/problemset/problem/732/B Cormen - The Best Friend Of a Man time limit per ...

  5. selenium2 TestNG参数化

    想要参数化,首先要加入@Parameters({"参数1","参数2"}) package com.demo.test; import java.util.co ...

  6. 【Open-Falcon】Linux下安装Open-Falcon

    一.Open-Falcon组件简述 [Open-Falcon绘图相关组件] Agent:  部署在目标机器采集机器监控项 Transfer : 数据接收端,转发数据到后端Graph和Judge Gra ...

  7. java8新特性:接口的默认方法与静态方法

    接口中一共可以定义三种方法: 1.抽象方法,也就是需要实现者必须实现的方法,最常见的那种 2.默认方法,不需要实现者实现 3.静态方法,不需要实现者实现 默认方法: 允许在已有的接口中添加新方法,而同 ...

  8. Oracle数据库的日常使用命令

    1.     启动和关闭数据库 sqlplus /nolog; SQL >conn / as sysdba;(上面的两条命令相当于sqlplus ‘/as sysdba’) SQL >st ...

  9. 九度oj 题目1372:最大子向量和(连续子数组的最大和)

    题目描述: HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学.今天JOBDU测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决.但 ...

  10. SG函数 与 ICG问题

    ICG ICG(Impartial Combinatorial Games)游戏是组合游戏(Combinatorial Games)的一类 满足如下性质: ①有两名玩家 ②两名玩家轮流操作,在一个有限 ...