SWUST0249 (凸包面积)
type node=record x,y:longint; end;
const maxn=;
var k,q,qq:longint;
sum:double;
f,g:array[..maxn] of node;
m,i,j,a,b:longint;
stack:array[..maxn] of longint;
nm:longint;
function dis(a,b:node):double;
begin
exit(sqrt(sqr(a.x-b.x)+sqr(a.y-b.y)));
end;
procedure swap(var a,b:node); inline;
var c:node;
begin
c:=a; a:=b; b:=c;
end;
function dig(a,b:node):longint; inline;
begin
exit(a.x*b.y-a.y*b.x);
end;
function mk(a,b:node):node; inline;
begin
mk.x:=b.x-a.x;
mk.y:=b.y-a.y;
end;
function cmp(a,b:node):boolean; inline;
var p1,p2:node;
begin
p1:=mk(f[],a);
p2:=mk(f[],b);
if dig(P1,P2)< then exit(true);
if dig(P1,P2)= then
if dis(f[],a)>dis(f[],b) then
exit(true);
exit(false);
end;
procedure sort(l,r:longint);
var i,j:longint;
x:node;
begin
i:=l; j:=r; x:=f[(l+r) div ];
while i<=j do
begin
while cmp(f[i],x) do inc(i);
while cmp(x,f[j]) do dec(j);
if i<=j then
begin
swap(f[i],f[j]);
inc(i); dec(j);
end;
end;
if l<j then sort(l,j);
if i<r then sort(i,r);
end;
begin
readln(q);
for qq:= to q do
begin
readln(m);
for i:= to m do readln(f[i].x,f[i].y);
if m= then begin writeln('0.0'); continue; end;
j:=;
for i:= to m do
if (f[i].y<f[j].y) or (f[i].y=f[j].y) and (f[i].x<f[j].x) then
j:=i;
swap(f[],f[j]);
sort(,m);
k:=;
g[]:=f[]; g[]:=f[];
for i:= to m do
if dig(mk(f[],f[i]),mk(f[],f[i-]))<> then
begin
inc(k);
g[k]:=f[i];
end;
nm:=;
stack[]:=; stack[]:=; stack[]:=;
for i:= to k do
begin
a:=stack[nm-];
b:=stack[nm];
while dig(mk(g[a],g[b]),mk(g[a],g[i]))> do
begin
dec(nm);
a:=stack[nm-];
b:=stack[nm];
end;
inc(nm);
stack[nm]:=i;
end;
sum:=;
while nm>= do
begin
a:=stack[nm];
b:=stack[nm-];
sum:=sum+abs(dig(mk(g[],g[b]),mk(g[],g[a])))/;
dec(nm);
end;
writeln(sum::);
end;
end.
SWUST0249 (凸包面积)的更多相关文章
- POJ 3348 - Cows 凸包面积
求凸包面积.求结果后不用加绝对值,这是BBS()排序决定的. //Ps 熟练了template <class T>之后用起来真心方便= = //POJ 3348 //凸包面积 //1A 2 ...
- poj 3348 Cow 凸包面积
Cows Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 8122 Accepted: 3674 Description ...
- poj 3348:Cows(计算几何,求凸包面积)
Cows Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 6199 Accepted: 2822 Description ...
- uva109求凸包面积,判断点是不是在凸包内
自己想了一个方法判断点是不是在凸包内,先求出凸包面积,在求由点与凸包上每两个点之间的面积(点已经排好序了),如果两者相等,则点在凸包内,否则不在(时间复杂度可能有点高)但是这题能过 #include& ...
- poj3348凸包面积
用叉积求凸包面积 如图所示,每次找p[0]来计算,(叉积是以两个向量构成的平行四边形的面积,所以要/2) #include<map> #include<set> #includ ...
- poj 3348(凸包面积)
Cows Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 8063 Accepted: 3651 Description ...
- 【UVA10652】Board Wrapping(求凸包面积)
点此看题面 大致题意: 告诉你若干个矩形的重心坐标.长.宽和相对\(y\)轴的偏转角度,求矩形面积和与能围住这些矩形的最小凸包面积之比. 矩形面积和 这应该是比较好求的吧. 已经给了你长和宽,直接乘起 ...
- poj3348(求凸包面积)
题目链接:https://vjudge.net/problem/POJ-3348 题意:转换题意后即是求凸包的面积. 思路: 套模板,求凸包面积即转换为多个三角形面积之和,用叉积求,然后除2,因为本题 ...
- UESTC 33 Area --凸包面积
题意: 求一条直线分凸包两边的面积. 解法: 因为题意会说一定穿过,那么不会有直线与某条边重合的情况.我们只要找到一个直线分成的凸包即可,另一个的面积等于总面积减去那个的面积. 怎么得到分成的一个凸包 ...
随机推荐
- 张艾迪(创始人):AOOOiA.global因梦想而诞生
AOOOiA.global因梦想而诞生 The World No.1 Girl :Eidyzhang The World No.1 Internet Girl :Eidyzhang AOOOiA.gl ...
- Java 多线程 —— synchronized关键字
java 多线程 目录: Java 多线程——基础知识 Java 多线程 —— synchronized关键字 java 多线程——一个定时调度的例子 java 多线程——quartz 定时调度的例子 ...
- POC测试——原型验证,降低风险,IT系统销售工作之一
POC测试,即Proof of Concept,是业界流行的针对客户具体应用的验证性测试,根据用户对采用系统提出的性能要求和扩展需求的指标,在选用服务器上进行真实数据的运行,对承载用户数据量和运行时间 ...
- Git工作流指南:集中式工作流
转载:http://blog.jobbole.com/76847/ 本文由 伯乐在线 - 李鼎 翻译.未经许可,禁止转载!英文出处:atlassian.欢迎加入翻译组. 转到分布式版本控制系统看起来像 ...
- [转]JDK6和JDK7中的substring()方法
substring(int beginIndex, int endIndex)在JDK6与JDK7中的实现方式不一样,理解他们的差异有助于更好的使用它们.为了简单起见,下面所说的substring() ...
- 使用FIDDER 抓包构建请求
FIDDER 是一个抓包利器,可以抓去浏览器的http请求. 工作原理是: FIDDER 作为代理. 1.在启动fidder时他自动启动服务监听8888端口. 2.启动FIDDER它会自动修改 ...
- redhat enterprixe 5.0 web 服务配置与管理
一.Web服务及工作原理 Web服务的实现采用客户/服务器模型.客户机运行Web客户程序(浏览器),作用是解释和显示Web页面,相应用户的输入请求,并且通过http协议将用户请求传递给Web服务器.W ...
- js的严谨模式
一.怎么用 <script type="text/javascript"> "use strict"; //放在脚本文件第一行,整个脚本将以 ...
- ACM心情总结
已经快要12点了,然而还有5000字概率论论文没有动.在论文里,我本来是想要总结一下ACM竞赛中出现过的概率论题目,然而当敲打第一段前言的时候,我就迟疑了. 我问自己,ACM竞赛到底有什么现实意义. ...
- 走进AngularJs(七) 过滤器(filter) - 吕大豹
时间 2013-12-15 16:22:00 博客园-原创精华区 原文 http://www.cnblogs.com/lvdabao/p/3475426.html 主题 AngularJS 过滤器 ...