题面

题意:给你一堆点,求一个最大面积的空凸包,里面没有点.

题解:红书板子,照抄完事,因为题目给的都是整点,所以最后答案一定是.5或者.0结尾,不用对答案多做处理

 1 #include<bits/stdc++.h>
 2 #define N 55
 3 using namespace std;
 4 struct rec
 5 {
 6     double x,y;
 7 };
 8 rec operator -(rec a,rec b)
 9 {
10     rec c;
11     c.x=a.x-b.x;
12     c.y=a.y-b.y;
13     return c;
14 }
15 double sqr(double a)
16 {
17     return a*a;
18 }
19 int sign(double a)
20 {
21     if (fabs(a) <= 1e-6) return 0;
22     return a<0?-1 :1;
23 }
24 bool operator <(rec a,rec b)
25 {
26      return sign(b.y-a.y)>0 || sign(b.y-a.y)==0 && sign(b.x-a.x)>0;
27 }
28 double max(double a,double b)
29 {
30     return a>b ?a:b;
31 }
32 double length(rec a)
33 {
34     return sqrt(sqr(a.x)+sqr(a.y));
35 }
36 double cross(rec a,rec b)
37 {
38     return a.x*b.y-a.y*b.x;
39 }
40 rec dot[N],lis[N];
41 double opt[N][N];
42 int seq[N],n,len;
43 double ans;
44 bool Compare(rec a,rec b)
45 {
46     int temp=sign(cross(a,b));
47     if (temp!=0) return temp>0;
48     temp=sign(length(b)-length(a));
49     return temp>0;
50 }
51 void solve(int vv)
52 {
53     int t,i,j,_len;
54     for (i=len=0;i<n;i++)
55         if (dot[vv]<dot[i]) lis[len++]=dot[i]-dot[vv];
56     for (int i=0;i<len;i++)
57         for (int j=0;j<len;j++)
58             opt[i][j]=0;
59     sort(lis,lis+len,Compare);
60     double v;
61     for (t=1;t<len;t++)
62     {
63         _len=0;
64         for (i=t-1;i>=0 && sign(cross(lis[t],lis[i])) ==0   ;i--);
65         while (i>=0)
66         {
67             v=cross(lis[i],lis[t])/2;
68             seq[_len++]=i;
69             for (j=i-1; j>=0 && sign(cross(lis[i]-lis[t], lis[j]-lis[t])) >0 ;j--);
70             if (j>=0) v+=opt[i][j];
71             ans=max(ans,v);
72             opt[t][i]=v;
73             i=j;
74         }
75         for (i = _len-2;i>=0;i--)
76             opt[t][seq[i]]=max(opt[t][seq[i]],opt[t][seq[i+1]]);
77     }
78 }
79 int T;
80 int main()
81 {
82     scanf("%d",&T);
83     while (T--)
84     {
85         scanf("%d",&n);
86         for (int i=0;i<n;i++) scanf("%lf%lf",&dot[i].x,&dot[i].y);
87         ans=0;
88         for (int i=0;i<n;i++) solve(i);
89         printf("%.1lf\n",ans);
90     }
91     return 0;
92 }

转载于:https://www.cnblogs.com/qywhy/p/9741184.html

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

  1. HDU6218 2017ACM/ICPC亚洲区沈阳站 Bridge(Set,线段树)

    HDU6218 2017ACM/ICPC亚洲区沈阳站 Bridge Solution 我们考虑维护在环上的边的个数,答案就是总边数减去环上边数. 环的形态是这样的:(0,l),(0,l+1)...(0 ...

  2. 【HDU 6217 2017ACM/ICPC亚洲区沈阳站】BBP Formula

    BBP算法的一个模板 #include <cstdio> #include<iostream> using namespace std; typedef long long l ...

  3. 暑期ACM模拟赛--2017ACM/ICPC亚洲区沈阳站-重现赛 【待补】

    A - BBP Formula HDU - 6217 (数学问题+公式推导+快速幂) F - Heron and His Triangle HDU - 6222  (数学问题+海伦公式+大数) I - ...

  4. 2016ACM/ICPC亚洲区沈阳站-重现赛(感谢东北大学)

    目录 A Thickest Burger B Relative atomic mass C Recursive sequence · 矩阵快速幂 E Counting Cliques · 暴力 H G ...

  5. 【hdu 5512】【 2015ACM/ICPC亚洲区沈阳站】Pagodas 题意&题解&代码(C++)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5512 题意: 给出n个点和a,b两个初始被标记的点,每次可以选取已经被标记点中的两个点 i , j ...

  6. HDU 5952 Counting Cliques(2016ACM/ICPC亚洲区沈阳站-重现赛)

    题目分析 这道题看样子没有什么办法,主要就是有策略的暴力,因为每个点连接的点不超过20个,那么就可以直接进行暴力,但是这样会有很多重复,因此需要剪枝,具体情况就是每次搜过一个点之后就把这个点连接的所有 ...

  7. 2016ACM/ICPC亚洲区大连站现场赛题解报告(转)

    http://blog.csdn.net/queuelovestack/article/details/53055418 下午重现了一下大连赛区的比赛,感觉有点神奇,重现时居然改了现场赛的数据范围,原 ...

  8. 2016ACM/ICPC亚洲区大连站现场赛题解报告

    此文章可以使用目录功能哟↑(点击上方[+]) 下午重现了一下大连赛区的比赛,感觉有点神奇,重现时居然改了现场赛的数据范围,原本过的人数比较多的题结果重现过的变少了,而原本现场赛全场过的人最少的题重现做 ...

  9. 2016 ACM/ICPC亚洲区青岛站现场赛(部分题解)

    摘要 本文主要列举并求解了2016 ACM/ICPC亚洲区青岛站现场赛的部分真题,着重介绍了各个题目的解题思路,结合详细的AC代码,意在熟悉青岛赛区的出题策略,以备战2018青岛站现场赛. HDU 5 ...

最新文章

  1. 【数理知识】矩阵束 Matrix Pencil
  2. 53. Leetcode 112. 路径总和 (二叉树-二叉树路径和)
  3. 【Linux】一步一步学Linux——perl命令(264)
  4. 腾讯副总裁姚星:腾讯AI Lab将致力打造通往AGI之路
  5. python入门文件读取与写入_初学者Python:读取和写入同一文件
  6. LeetCode MySQL 1141. 查询近30天活跃用户数
  7. apache日志导入mysql,将Apache访问日志记录到Mysql数据库中
  8. 大数据时代的3V3高
  9. c语言 sqrt求100以内素数,C语言实现判断一个数是否为素数并求100以内的所有素数...
  10. 鸿蒙-HI3516-Docker环境搭建编译烧录
  11. System Center 2012 R2实例3—SCOM之SharePoint全方位监视11—服务监视
  12. Linux最小化安装
  13. keypress事件中键盘上每个键的KeyAscii值(易语言/VB)
  14. 树莓派4B安装windows xp windows 95( windows xp windows 95 for raspberry pi 4B)
  15. STM32F407VG晶振与主频配置
  16. Pikachu靶场全关详细教学(一)
  17. JavaScript 网页禁用屏蔽常用操作
  18. 基于机器学习的电力系统故障分类预测模型
  19. C10k-problem
  20. Myeclipse链接sql server 2005是出现Error while performing database login with the sql2005 driver:

热门文章

  1. java分布式锁工具类_java 通过redis实现分布式锁
  2. 服务器pg信号指的是什么信号,关于atx电源PG信号检测和分析
  3. html 浮动窗口置顶,jQuery简单实现页面元素置顶时悬浮效果示例
  4. UNIX(多线程):21---线程池实现原理
  5. python计算股票趋势_通过机器学习的线性回归算法预测股票走势(用Python实现)...
  6. 英语口语 week11 Tuesday
  7. 广州市科目三电子路考--大观路通过经验
  8. 经验从哪里来?从痛苦中来!
  9. store_coding_state (cs_cm)的作用
  10. 解决:bash: vim: command not found、docker 容器不识别 vi / vim 、docker 容器中安装 vim