博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
zoj 3871
阅读量:5371 次
发布时间:2019-06-15

本文共 938 字,大约阅读时间需要 3 分钟。

貌似这道题某人已经扔给我一个多星期了(雾)

首先要知道这样一点:凸包的面积可以直接用线段的有向面积和求得。

自己口胡的证明:单纯一条线段自身的叉积就是到原点与这条线段构成三角形的面积吧,那么加加减减之后就是凸包的面积了。。

所以我们可以单独考虑每条边的贡献。

显然一条边的贡献,就是在它 一侧 点的集合的 非空子集 的 数目。

所以我们枚举点然后极角排序扫一遍。

貌似除了自己手残写错了没有什么大坑?(雾)

1 #include 
2 using namespace std; 3 typedef long double db; 4 typedef long long ll; 5 const ll mod = 998244353; 6 const db eps=1e-6; 7 const db pi=acos(-1); 8 int sign(db k){
if(k>-eps)return 1;else if(k<-eps)return -1; return 0;} 9 int cmp(db k1,db k2){ return sign(k1-k2);}10 struct point{11 ll x,y;12 db ang;13 point operator+(const point &k1)const { return point{x+k1.x,y+k1.y};}14 point operator-(const point &k1)const { return point{x-k1.x,y-k1.y};}15 db getw(){ return atan2(1.0*y,1.0*x);}16 };17 ll cross(point k1,point k2){ return (k1.x*k2.y%mod-k1.y*k2.x%mod+2*mod)%mod;}18 bool cmp2(point a,point b){19 return a.ang
View Code

 

转载于:https://www.cnblogs.com/MXang/p/10541052.html

你可能感兴趣的文章
第四周作业
查看>>
一、HTML基础
查看>>
蓝牙进阶之路 (002) - HC-05与HC-06的AT指令的区别(转)
查看>>
mysql的limit经典用法及优化
查看>>
C#后台程序与HTML页面中JS方法互调
查看>>
mysql 同一个表中 字段a 的值赋值到字段b
查看>>
antiSMASH数据库:微生物次生代谢物合成基因组簇查询和预测
查看>>
UNICODE与ANSI的区别
查看>>
nginx 配置实例
查看>>
Flutter - 创建底部导航栏
查看>>
ASP.NET MVC 教程-MVC简介
查看>>
SQL Server索引 - 聚集索引、非聚集索引、非聚集唯一索引 <第八篇>
查看>>
转载:详解SAP TPM解决方案在快速消费品行业中的应用
查看>>
Android OpenGL ES 开发(N): OpenGL ES 2.0 机型兼容问题整理
查看>>
项目中用到的技术及工具汇总(持续更新)
查看>>
【算法】各种排序算法测试代码
查看>>
HDU 5776 Sum
查看>>
201521123044 《Java程序设计》第9周学习总结
查看>>
winfrom 图片等比例压缩
查看>>
人工智能实验报告一
查看>>