https://vjudge.net/contest/324256#problem/L

题意:给一堆点,求最大空凸包面积。

思路:枚举凸包左下角点O,dp找出以这个点为起始位置能构成的最大空凸包面积,用dp[i][j]表示以Oi和ij为凸包最后两边所构成凸包面积的最大值。

dp[i][j] = max(dp[i][j],triangle(O,i,j)+dp[j][k])

#include<bits/stdc++.h>
#define ll long long
#define rep(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
struct Point {
int x,y;
Point(){};
Point(int x,int y):x(x),y(y){}
Point operator + (const Point &b) const {
return Point(x+b.x,y+b.y);
}
Point operator -(const Point &b) const {
return Point(x-b.x,y-b.y);
}
int operator *(const Point &b) const {
return x*b.y-y*b.x;
}
int len() const {
return x*x+y*y;
}
int operator<(const Point &a) const {
if((*this)*a>0||(*this)*a==0&&len()<a.len()){
return 1;
}
return 0;
}
}point;
int n;
Point s[122],p[122];
int dp[122][122]; int jud(int m){
int ans,i,j,now,k,flag,s;
memset(dp,0,sizeof dp);
ans = 0;
for(i=2;i<=m;i++){
now = i-1;
while(now>=1&&p[i]*p[now]==0) now--;
flag = 0;
if(now==i-1) flag = 1;
while(now>=1){
s = p[now]*p[i];
k = now-1;
while(k>=1&&(p[now]-p[i])*(p[k]-p[now])>0) k--;
if(k>=1) s += dp[now][k];
if(flag) dp[i][now] = s;
ans = max(ans,s);
now = k;
}
if(flag==0) continue;
for(j=1;j<=i-1;j++) dp[i][j] = max(dp[i][j],dp[i][j-1]);
}
return ans;
} int main(){
int t,i,j,m,ans;
cin>>t;
while(t--){
cin>>n;
for(i=1;i<=n;i++) cin>>s[i].x>>s[i].y;
ans = 0;
for(i=1;i<=n;i++){
m = 0;
for(j=1;j<=n;j++){
if(s[j].y>s[i].y||s[j].y==s[i].y&&s[j].x>=s[i].x){
p[++m] = s[j]-s[i];
}
}
sort(p+1,p+1+m);
ans = max(ans,jud(m));
}
printf("%.1f\n",ans/2.0);
}
return 0;
}

hdu6219 Empty Convex Polygons (最大空凸包板子的更多相关文章

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

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

  2. hdu 6219 Empty Convex Polygons (凸包)

    给你n个点,求面积最大的凸多边形,使得这个凸多边形没有内点. 考虑求凸包的graham算法,需要找到左下角的点,再进行极角排序后按顺序扫点,所以先枚举左下角的点. 这个过程中,如果遇到内点,就需要把这 ...

  3. Monotone Chain Convex Hull(单调链凸包)

    Monotone Chain Convex Hull(单调链凸包)算法伪代码: //输入:一个在平面上的点集P //点集 P 按 先x后y 的递增排序 //m 表示共a[i=0...m]个点,ans为 ...

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

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

  5. hdu6219(最大空凸包)

    题意: 给一些点,求出一个最大的空凸包,这个凸包里没有任何给定点且要求这个凸包面积最大 分析: 枚举凸包左下角的点,然后dp[i][j]表示凸包的最后两条边是j->i和i->O情况下凸包的 ...

  6. Codeforces Round #113 (Div. 2) B. Polygons Andrew求凸包

    B. Polygons time limit per test 2 seconds memory limit per test 256 megabytes input standard input o ...

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

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

  8. Gym 101986D Making Perimeter of the Convex Hull Shortest(凸包+极角排序)

    首先肯定是构造一个完整的凸包包括所有的点,那么要使得刚好有两个点在外面,满足这个条件的只有三种情况. 1.两个在凸包上但是不连续的两个点. 2.两个在凸包上但是连续的两个点. 3.一个在凸包上,还有一 ...

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

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

随机推荐

  1. python多进程详解

    目录 python多进程 序.multiprocessing 一.Process process介绍 例1.1:创建函数并将其作为单个进程 例1.2:创建函数并将其作为多个进程 例1.3:将进程定义为 ...

  2. 【iOS】创建真机调试证书

    今天第一次完整的在一个开发者账号里添加证书,刚接触,还真有些不熟悉,还好找到了一篇不错的文章:iOS开发:创建真机调试证书 ,做了很详细的介绍. 分享一下!!

  3. Hadoop MapReduce的Shuffle过程

    一.概述 理解Hadoop的Shuffle过程是一个大数据工程师必须的,笔者自己将学习笔记记录下来,以便以后方便复习查看. 二. MapReduce确保每个reducer的输入都是按键排序的.系统执行 ...

  4. Maven安装和配置环境变量

    Maven配置 1.下载 下载maven 3.5.4 先到官网http://maven.apache.org/download.cgi 下载最新版本(目前是3.5.4 ),下载完成后,解压到某个目录( ...

  5. Task CancellationTokenSource和Task.WhenAll的应用

    Task是.net4.0推出的异步编程类,与ThreadPool.QueneUserWorkItem方法类似的是,Task也是使用线程池来工作的.但Task比起这个QueneUserWorkItem的 ...

  6. 携程 Apollo 配置中心传统 .NET 项目集成实践

    官方文档存在的问题 可能由于 Apollo 配置中心的客户端源码一直处于更新中,导致其相关文档有些跟不上节奏,部分文档写的不规范,很容易给做对接的新手朋友造成误导. 比如,我在参考如下两个文档使用传统 ...

  7. 对vue中nextTick()的理解及使用场景说明

    异步更新队列: 首先我们要对vue的数据更新有一定理解: vue是依靠数据驱动视图更新的,该更新的过程是异步的. 即:当侦听到你的数据发生变化时, Vue将开启一个队列(该队列被Vue官方称为异步更新 ...

  8. [转载]MongoDB管理基础

    1.  启动和停止MongoDB: 执行mongod命令启动MongoDB服务器.mongod有很多可配置的选项,我们通过mongod --help可以查看所有选项,这里仅介绍一些主要选项:    - ...

  9. 解读 PHP 的 P++提案

    解读 PHP 的 P++提案 周末看到一篇文章说 PHP 创始人提议将 PHP 拉出新分支,创建 P++ 语言.随后阅读了一下 Zeev Suraski 发起的这个邮件列表,大致了解了一下,这里做个解 ...

  10. Appium+python自动化(三十)- 实现代码与数据分离 - 数据配置-yaml(超详解)

    简介 本篇文章主要介绍了python中yaml配置文件模块的使用让其完成数据和代码的分离,宏哥觉得挺不错的,于是就义无反顾地分享给大家,也给大家做个参考.一起跟随宏哥过来看看吧. 思考问题 前面我们配 ...