题意:

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

分析:

  枚举凸包左下角的点,然后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 ;
}

最新文章

  1. JSON相关知识,转载:删除JSON中数组删除操作
  2. AngularJS ui-router (嵌套路由)
  3. Android setVisibility()
  4. 自定义Spring Security权限控制管理(实战篇)
  5. Block回调
  6. Docker的学习--介绍和安装
  7. [转载]在SQL Server 中,如何实现DBF文件和SQL Server表之间的导入或者导出?
  8. XCOJ 1168 (搜索+期望+高斯消元法)
  9. Mysql单实例脚本自动化安装
  10. 02.零成本实现WEB性能测试-基于APACHE JMETER
  11. cordova环境配置步骤
  12. js-ES6学习笔记-Set结构和Map结构
  13. VSCode自定义配色方案
  14. 修改NSMutableArray中的元素时的注意事项
  15. 【自制工具类】struts返回json数据包装格式类
  16. VC下ffmpeg例程调试报错处理
  17. 项目Alpha冲刺Day12
  18. 【Unity Shaders】Using Textures for Effects——打包和混合textures
  19. Bellman-Ford算法(在边权可正可负时求最短路)
  20. Linux安装gcc/g++

热门文章

  1. 用decimal模块增加python的浮点数精度
  2. LeetCode(123) Best Time to Buy and Sell Stock III
  3. Cleaning Shifts POJ - 2376 (贪心题)
  4. x mod a=r(N对a,r)
  5. TSS (任务状态段)的作用及结构
  6. 光学字符识别OCR-4
  7. 关于windows服务的编写/安装/与调试
  8. TransH中的Hinge Loss Function
  9. UITabBarController支持旋转
  10. 【bzoj1449/bzoj2895】[JSOI2009]球队收益/球队预算 费用流