2017ACM/ICPC亚洲区沈阳站 C Hdu-6219 Empty Convex Polygons 计算几何 最大空凸包
题面
题意:给你一堆点,求一个最大面积的空凸包,里面没有点.
题解:红书板子,照抄完事,因为题目给的都是整点,所以最后答案一定是.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 计算几何 最大空凸包相关推荐
- HDU6218 2017ACM/ICPC亚洲区沈阳站 Bridge(Set,线段树)
HDU6218 2017ACM/ICPC亚洲区沈阳站 Bridge Solution 我们考虑维护在环上的边的个数,答案就是总边数减去环上边数. 环的形态是这样的:(0,l),(0,l+1)...(0 ...
- 【HDU 6217 2017ACM/ICPC亚洲区沈阳站】BBP Formula
BBP算法的一个模板 #include <cstdio> #include<iostream> using namespace std; typedef long long l ...
- 暑期ACM模拟赛--2017ACM/ICPC亚洲区沈阳站-重现赛 【待补】
A - BBP Formula HDU - 6217 (数学问题+公式推导+快速幂) F - Heron and His Triangle HDU - 6222 (数学问题+海伦公式+大数) I - ...
- 2016ACM/ICPC亚洲区沈阳站-重现赛(感谢东北大学)
目录 A Thickest Burger B Relative atomic mass C Recursive sequence · 矩阵快速幂 E Counting Cliques · 暴力 H G ...
- 【hdu 5512】【 2015ACM/ICPC亚洲区沈阳站】Pagodas 题意&题解&代码(C++)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5512 题意: 给出n个点和a,b两个初始被标记的点,每次可以选取已经被标记点中的两个点 i , j ...
- HDU 5952 Counting Cliques(2016ACM/ICPC亚洲区沈阳站-重现赛)
题目分析 这道题看样子没有什么办法,主要就是有策略的暴力,因为每个点连接的点不超过20个,那么就可以直接进行暴力,但是这样会有很多重复,因此需要剪枝,具体情况就是每次搜过一个点之后就把这个点连接的所有 ...
- 2016ACM/ICPC亚洲区大连站现场赛题解报告(转)
http://blog.csdn.net/queuelovestack/article/details/53055418 下午重现了一下大连赛区的比赛,感觉有点神奇,重现时居然改了现场赛的数据范围,原 ...
- 2016ACM/ICPC亚洲区大连站现场赛题解报告
此文章可以使用目录功能哟↑(点击上方[+]) 下午重现了一下大连赛区的比赛,感觉有点神奇,重现时居然改了现场赛的数据范围,原本过的人数比较多的题结果重现过的变少了,而原本现场赛全场过的人最少的题重现做 ...
- 2016 ACM/ICPC亚洲区青岛站现场赛(部分题解)
摘要 本文主要列举并求解了2016 ACM/ICPC亚洲区青岛站现场赛的部分真题,着重介绍了各个题目的解题思路,结合详细的AC代码,意在熟悉青岛赛区的出题策略,以备战2018青岛站现场赛. HDU 5 ...
最新文章
- 【数理知识】矩阵束 Matrix Pencil
- 53. Leetcode 112. 路径总和 (二叉树-二叉树路径和)
- 【Linux】一步一步学Linux——perl命令(264)
- 腾讯副总裁姚星:腾讯AI Lab将致力打造通往AGI之路
- python入门文件读取与写入_初学者Python:读取和写入同一文件
- LeetCode MySQL 1141. 查询近30天活跃用户数
- apache日志导入mysql,将Apache访问日志记录到Mysql数据库中
- 大数据时代的3V3高
- c语言 sqrt求100以内素数,C语言实现判断一个数是否为素数并求100以内的所有素数...
- 鸿蒙-HI3516-Docker环境搭建编译烧录
- System Center 2012 R2实例3—SCOM之SharePoint全方位监视11—服务监视
- Linux最小化安装
- keypress事件中键盘上每个键的KeyAscii值(易语言/VB)
- 树莓派4B安装windows xp windows 95( windows xp windows 95 for raspberry pi 4B)
- STM32F407VG晶振与主频配置
- Pikachu靶场全关详细教学(一)
- JavaScript 网页禁用屏蔽常用操作
- 基于机器学习的电力系统故障分类预测模型
- C10k-problem
- Myeclipse链接sql server 2005是出现Error while performing database login with the sql2005 driver:
热门文章
- java分布式锁工具类_java 通过redis实现分布式锁
- 服务器pg信号指的是什么信号,关于atx电源PG信号检测和分析
- html 浮动窗口置顶,jQuery简单实现页面元素置顶时悬浮效果示例
- UNIX(多线程):21---线程池实现原理
- python计算股票趋势_通过机器学习的线性回归算法预测股票走势(用Python实现)...
- 英语口语 week11 Tuesday
- 广州市科目三电子路考--大观路通过经验
- 经验从哪里来?从痛苦中来!
- store_coding_state (cs_cm)的作用
- 解决:bash: vim: command not found、docker 容器不识别 vi / vim 、docker 容器中安装 vim