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. 【iOS】获取项目名和版本号

    iOS 开发中,有时候需要获取项目名和版本号,示例代码如下: -(void)getProjectNameAndVersion{ appName = [[[NSBundle mainBundle] in ...

  2. centos6.5-7编译安装Ansible详细部署

    一.基础介绍==========================================================================================ansi ...

  3. PHP编码风格规范

    由于PHP的灵活性,很多人写起代码来也不讲求一个好的代码规范,使得本就灵活的PHP代码看起来很乱,其实PSR规范中的PSR-1和PSR-2已经定义了在PHP编码中的一些规范,只要我们好好遵守这些规范, ...

  4. codeforces 213div(2) 365 A.Good Number 365 B.The Fibonacci Segment

    #include <stdio.h> #include <string.h> bool vis[11]; int n, k; bool judge(int x) { memse ...

  5. str_replace导致的注入问题汇总

    研究了下replace的注入安全问题. 一般sql注入的过滤方式就是引用addslashes函数进行过滤. 他会把注入的单引号转换成\',把双引号转换成\",反斜杠会转换成\\等 写一段ph ...

  6. F#周报2019年第32期

    新闻 推出FSharp.Core 4.7,附带netstandard2支持 ML.NET 1.3.1发布 FSharp.SystemTextJson宣告:对于.NET Core的System.Text ...

  7. 免费IP代理池定时维护,封装通用爬虫工具类每次随机更新IP代理池跟UserAgent池,并制作简易流量爬虫

    前言 我们之前的爬虫都是模拟成浏览器后直接爬取,并没有动态设置IP代理以及UserAgent标识,本文记录免费IP代理池定时维护,封装通用爬虫工具类每次随机更新IP代理池跟UserAgent池,并制作 ...

  8. 深圳市宁远电子大骆驼DLT3288C-韦根输入接口说明

    DLT3288C 板卡上有一组韦根接口,位置如下图所示:  注意:韦根与 RS485 是同时使用一组 Pin 脚,功能二选一.板子默认是 RS485,需要韦 根功能的,需跳电阻.   1.设备控制节点 ...

  9. 小白学Python(3)——输入和输出,显示你的名字

    任何计算机程序都是为了执行一个特定的任务,有了输入,用户才能告诉计算机程序所需的信息,有了输出,程序运行后才能告诉用户任务的结果. 输入是Input,输出是Output,因此,我们把输入输出统称为In ...

  10. Jmeter接口自动化实例(使用Beanshell保存csv文件、csv参数化、setUp线程组)

    很久没更新博客了,荒废了很久了,今天更新一下博客,主要记录一下子最近遇到的问题和解决方法:blonde_woman: 这篇文章主要记录的是jmeter批量跑接口中遇到的各种疑难,主要涉及到的问题如下 ...