hdu1392凸包裸题
//极角排序
#include <bits/stdc++.h>
#define sqr(x) ((x)*(x))
using namespace std;
int n,st[],top;
struct POI
{
int x,y;
POI()
{
x=y=;
}
POI(int _x,int _y)
{
x=_x;y=_y;
}
} p[];
int cross(POI x,POI y)
{
return x.x*y.y-x.y*y.x;
}
double dis(POI x,POI y)
{
return sqrt(sqr(x.x-y.x)+sqr(x.y-y.y));
}
POI operator-(POI x,POI y)
{
return POI(x.x-y.x,x.y-y.y);
}
bool com(POI x,POI y)
{
return(cross(x-p[],y-p[])> || cross(x-p[],y-p[])== && dis(x,p[])<dis(y,p[]));
}
int main()
{
for(scanf("%d",&n);n;scanf("%d",&n))
{
for(int i=;i<=n;i++)
scanf("%d%d",&p[i].x,&p[i].y);
if(n==)//wtf
{
printf("%.2f\n",dis(p[],p[]));
continue;
}
int id=;
for(int i=;i<=n;i++)
if(p[i].x<p[id].x || p[i].x==p[id].x && p[i].y<p[id].y) id=i;
swap(p[],p[id]);
sort(p+,p+n+,com);
st[top=]=st[]=;
for(int i=;i<=n;i++)
{
while(top && cross(p[st[top]]-p[st[top-]],p[i]-p[st[top]])<) --top;
st[++top]=i;
}
double len=;
// puts("");
// for(int i=1;i<=top;i++)
// printf("%d %d\n",p[st[i]].x,p[st[i]].y);
st[++top]=;
for(int i=;i<top;i++)
len+=dis(p[st[i]],p[st[i+]]);
printf("%.2f\n",len);
}
return ;
}
hdu1392凸包裸题的更多相关文章
- hdu 1392 Surround the Trees 凸包裸题
Surround the Trees Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- poj 1113 wall(凸包裸题)(记住求线段距离的时候是点积,点积是cos)
Wall Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 43274 Accepted: 14716 Descriptio ...
- 【填坑】bzoj3224 splay裸题
人生第一道splay不出所料是一道裸题,一道水题,一道2k代码都不到的题 #include <cstdio> ,n,p,q; ],c[][],size[],sp[]; void rot(i ...
- tarjan讲解(用codevs1332(tarjan的裸题)讲解)
主要借助这道比较裸的题来讲一下tarjan这种算法 tarjan是一种求解有向图强连通分量的线性时间的算法.(用dfs来实现) 如果两个顶点可以相互通达,则称两个顶点强连通.如果有向图G的每两个顶点都 ...
- LCT裸题泛做
①洞穴勘测 bzoj2049 题意:由若干个操作,每次加入/删除两点间的一条边,询问某两点是否连通.保证任意时刻图都是一个森林.(两点之间至多只有一条路径) 这就是个link+cut+find roo ...
- 贴一下WC总结里提到的那道裸题吧。。。
[bzoj4034][HAOI2015]T2 试题描述 有一棵点数为 N 的树,以点 1 为根,且树点有边权.然后有 M 个 操作,分为三种: 操作 1 :把某个节点 x 的点权增加 a . 操作 2 ...
- HDU 1102 最小生成树裸题,kruskal,prim
1.HDU 1102 Constructing Roads 最小生成树 2.总结: 题意:修路,裸题 (1)kruskal //kruskal #include<iostream> ...
- hdu Flow Problem (最大流 裸题)
最大流裸题,贴下模版 view code#include <iostream> #include <cstdio> #include <cstring> #incl ...
- POJ 3468 线段树裸题
这些天一直在看线段树,因为临近期末,所以看得断断续续,弄得有些知识点没能理解得很透切,但我也知道不能钻牛角尖,所以配合着刷题来加深理解. 然后,这是线段树裸题,而且是最简单的区间增加与查询,我参考了A ...
随机推荐
- LightOJ 1070 Algebraic Problem:矩阵快速幂 + 数学推导
题目链接:http://lightoj.com/volume_showproblem.php?problem=1070 题意: 给你a+b和ab的值,给定一个n,让你求a^n + b^n的值(MOD ...
- uC/OS-II源码分析(二)
在真正开始分析源代码前,先来看使用uC/OS-II的三个例子 1)使用信号量 #define TASK_STK_SIZE 512 /* 每个任务堆栈的大小 ...
- requirejs的打包工具r.js
不建议用命令行,还是用配置文件比较方便--build.js. 我的build.js文件内容大概如下: ( { appDir : './', baseUrl : './scripts', dir : ' ...
- Ubuntu ssh免密登录
ssh免密登录工作原理 server A免登录到server B: 1.在A上生成公钥私钥. 2.将公钥拷贝给server B,要重命名成authorized_keys(从英文名就知道含义了) 3.S ...
- 如何用CSS实现矩形按钮右边缘的中间有个往里凹的小半圆
<!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8& ...
- 面试题: 数据库 sql优化 sql练习题 有用 学生表,课程表,成绩表,教师表 练习
什么是存储过程?有哪些优缺点? 什么是存储过程?有哪些优缺点? 存储过程就像我们编程语言中的函数一样,封装了我们的代码(PLSQL.T-SQL). 存储过程的优点: 能够将代码封装起来 保存在数据库之 ...
- 怎么判断DropDownList是否选择值
判断其 SelectedIndex 属性值 >0.
- asp.net清空页面上的所有TextBox
Asp.net中一次性清空页面上的所有TextBox中的内容,由于TextBox在客户端以<input type=”text”>形式来呈现的,因此解决方案有客户端和服务器端两种方式,服务器 ...
- 无法加载MainifestResourceTransformer
Cannot load implementation hint 'org.apache.maven.plugins.shade.resource.MainifestResourceTransforme ...
- 数据库路由中间件MyCat - 使用篇(6)
此文已由作者张镐薪授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 配置MyCat 4. 配置schema.xml schema.xml里面管理着MyCat的逻辑库.表,每张表 ...