poj 1113 Wall 凸包的应用
题解:本题用到的依然是凸包来求,最短的周长,只是多加了一个圆的长度而已,套用模板,就能搞定;
AC代码:
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cmath>
using namespace std;
int m,n;
struct p
{
double x,y;
friend int operator <(p a, p b)
{
if(a.x<b.x || ( a.x==b.x && a.y<b.y))
return ;
return ;
}
}a[],ans[];
double judge(p a, p b ,p c)
{
return (b.x-a.x)*(c.y-a.y)-(c.x-a.x)*(b.y-a.y);
}
int getnumber()//寻找关键点,来求出最短的周长
{
int k=;
for(int i=; i<m; i++)
{
while(k> && judge(ans[k-],ans[k-],a[i])<=)
{
k--;
}
ans[k++]=a[i];
}
int k1=k;
for(int i=m-; i>=; i--)
{
while(k>k1 && judge(ans[k-],ans[k-],a[i])<=)
{
k--;
}
ans[k++]=a[i];
}
return k-;//第一个点存了两次;
} int main()
{
scanf("%d %d",&m,&n);
for(int i=; i<m; i++)
scanf("%lf %lf",&a[i].x,&a[i].y);
sort(a,a+m);
int top=getnumber();
double ans1=;
int i;
for( i=; i<top; i++){
ans1+=sqrt((ans[i].x-ans[i+].x)*(ans[i].x-ans[i+].x)+(ans[i].y-ans[i+].y)*(ans[i].y-ans[i+].y));
}
//其实最后只需要加上一个圆的周长就ok了,多边形的外角和为360度;
ans1+=*3.141592653*n;
printf("%.0f\n",ans1);//G++ 这个才能过不能用(.0l%),C++可以
return ;
}
poj 1113 Wall 凸包的应用的更多相关文章
- POJ 1113 Wall 凸包 裸
LINK 题意:给出一个简单几何,问与其边距离长为L的几何图形的周长. 思路:求一个几何图形的最小外接几何,就是求凸包,距离为L相当于再多增加上一个圆的周长(因为只有四个角).看了黑书使用graham ...
- POJ 1113 Wall 凸包求周长
Wall Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 26286 Accepted: 8760 Description ...
- POJ 1113 - Wall 凸包
此题为凸包问题模板题,题目中所给点均为整点,考虑到数据范围问题求norm()时先转换成double了,把norm()那句改成<vector>压栈即可求得凸包. 初次提交被坑得很惨,在GDB ...
- poj 1113 wall(凸包裸题)(记住求线段距离的时候是点积,点积是cos)
Wall Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 43274 Accepted: 14716 Descriptio ...
- POJ 1113 Wall【凸包周长】
题目: http://poj.org/problem?id=1113 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=22013#probl ...
- poj 1113:Wall(计算几何,求凸包周长)
Wall Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 28462 Accepted: 9498 Description ...
- POJ 1113 Wall(凸包)
[题目链接] http://poj.org/problem?id=1113 [题目大意] 给出一个城堡,要求求出距城堡距离大于L的地方建围墙将城堡围起来求所要围墙的长度 [题解] 画图易得答案为凸包的 ...
- POJ 1113 Wall 求凸包
http://poj.org/problem?id=1113 不多说...凸包网上解法很多,这个是用graham的极角排序,也就是算导上的那个解法 其实其他方法随便乱搞都行...我只是测一下模板... ...
- POJ 1113 Wall 求凸包的两种方法
Wall Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 31199 Accepted: 10521 Descriptio ...
随机推荐
- 定制你自己的CRF模型
如何训练自己的CRF模型 Ansj从5.0版本之后支持训练自己的crf模型,在此之前虽然已经很早支持了CRF模型,但是在用户的自训练上要求苛刻,而且本身实现的CRF从性能到准确率都不如CRF++或者第 ...
- 18.并发类容器MQ
package demo7.MQ; public class QueueData { private int id; private String name; private String taskC ...
- Python中PyQuery库的使用总结
介绍 pyquery库是jQuery的Python实现,可以用于解析HTML网页内容,官方文档地址是:http://packages.python.org/pyquery/ pyquery 可让你用 ...
- 【实践】用for-in 循环实现三联联动
之前用jq 做过一次三联联动以及四联联动 现在为了更好地了解对象用js的原生方式做了一次 *本节要点方法: obj.selectedIndex 获取下拉列表选中的option 的索引 obj.o ...
- JVM性能监控工具(一)-jdk命令行工具
转载:http://blog.csdn.net/top_code/article/details/51456186 当系统出bug需要定位问题的时候,知识.经验是关键基础,数据是依据,工具是运用知识处 ...
- TestNG 六 测试结果
一.成功.失败和断言 如果一个测试没有抛出任何异常就完成运行或者说抛出了期望的异常(参见@Test注解的expectedExceptions属性文档),就说,这个测试时成功的. 测试方法的组成常常包括 ...
- CardLayout使用
相对于BoxLayout,GridBugLayut等常用的Swing layout,CardLayout是特殊的,前者是一个容器内布置组件,而后者是在一个容器内放置很多页面(但一个时间只用显示一个). ...
- Content Provider
Content Provider:提供了数据的接口,可以共享数据 基本概念:1:为存储和获取数据提供了同一的接口2:可以在不同的应用程序之间共享数据3:Android为常见的一些数据提供了Conten ...
- thinkphp 表名 大小写 窍门
我们有一个表auth_group_access,那么如何使用呢?在使用M方法时,对于带下划线的表名,可以采用如下方法. M('AuthGroupAccess');对应sql语句SQL: SHOW CO ...
- python学习准备阶段(环境配置)python解释器的选择
pycharm提示No Python interpreter configgured for the project ####### 1 点击configure python interpreter ...