poj 1113 Wall 凸包的应用
题目链接:poj 1113 单调链凸包小结
题解:本题用到的依然是凸包来求,最短的周长,只是多加了一个圆的长度而已,套用模板,就能搞定;
AC代码:
1 #include<iostream> 2 #include<algorithm> 3 #include<cstdio> 4 #include<cmath> 5 using namespace std; 6 int m,n; 7 struct p 8 { 9 double x,y; 10 friend int operator <(p a, p b) 11 { 12 if(a.x<b.x || ( a.x==b.x && a.y<b.y)) 13 return 1; 14 return 0; 15 } 16 }a[1010],ans[1010]; 17 double judge(p a, p b ,p c) 18 { 19 return (b.x-a.x)*(c.y-a.y)-(c.x-a.x)*(b.y-a.y); 20 } 21 int getnumber()//寻找关键点,来求出最短的周长 22 { 23 int k=0; 24 for(int i=0; i<m; i++) 25 { 26 while(k>1 && judge(ans[k-2],ans[k-1],a[i])<=0) 27 { 28 k--; 29 } 30 ans[k++]=a[i]; 31 } 32 int k1=k; 33 for(int i=m-1; i>=0; i--) 34 { 35 while(k>k1 && judge(ans[k-2],ans[k-1],a[i])<=0) 36 { 37 k--; 38 } 39 ans[k++]=a[i]; 40 } 41 return k-1;//第一个点存了两次; 42 } 43 44 int main() 45 { 46 scanf("%d %d",&m,&n); 47 for(int i=0; i<m; i++) 48 scanf("%lf %lf",&a[i].x,&a[i].y); 49 sort(a,a+m); 50 int top=getnumber(); 51 double ans1=0; 52 int i; 53 for( i=0; i<top; i++){ 54 ans1+=sqrt((ans[i].x-ans[i+1].x)*(ans[i].x-ans[i+1].x)+(ans[i].y-ans[i+1].y)*(ans[i].y-ans[i+1].y)); 55 } 56 //其实最后只需要加上一个圆的周长就ok了,多边形的外角和为360度; 57 ans1+=2*3.141592653*n; 58 printf("%.0f\n",ans1);//G++ 这个才能过不能用(.0l%),C++可以 59 return 0; 60 }
转载于:https://www.cnblogs.com/lovychen/p/3990131.html
poj 1113 Wall 凸包的应用相关推荐
- POJ 1113 Wall 求凸包
http://poj.org/problem?id=1113 不多说...凸包网上解法很多,这个是用graham的极角排序,也就是算导上的那个解法 其实其他方法随便乱搞都行...我只是测一下模板... ...
- poj 1113/3348 凸包(若干点外建围墙)
题意:通过坐标给定若干城堡,要在城堡外建立一个围墙,要求任意城堡到围墙的最小距离不少于一个整数r.求围墙的最小长度. 思路:答案为城堡的凸包长加上以r为半径的元周长.因为圆周的圆心角大小之和为n*18 ...
- POJ - Wall(凸包周长)
题目链接:http://poj.org/problem?id=1113 Time Limit: 1000MS Memory Limit: 10000K Description Once upon a ...
- wall poj 1113
题目链接:http://poj.org/problem?id=1113 题意:一个国王要在自己的城堡周围建一堵围墙,要求围墙距城堡最短距离为L.问建这样一堵围墙的最短长度是多少. 题解思路:显然围墙建 ...
- 凸包 poj 1113
求一个多边形 拐弯的地方用圆弧补上 距离>=l 求他的周长 求一个凸包的周长 加2*pi*l #include<stdio.h> #include<string.h> ...
- POJ 1228 —— “稳定”凸包
POJ 1228 Grandpa's Estate 这是个好题目,同时也是个不和谐的题目(不和谐原因是题目出的存在漏洞,数据弱,而且有些条件没给清楚,为了一个SB错误无限WA之后,终于AC) 题意就废 ...
- POJ 1584 计算几何 凸包
链接: http://poj.org/problem?id=1584 题意: 按照顺时针或逆时针方向输入一个n边形的顶点坐标集,先判断这个n边形是否为凸包. 再给定一个圆形(圆心坐标和半径),判断这个 ...
- poj 1873 枚举+凸包
题意:给出一些树的位置,价值,长度,现要求先砍一些树制成一定长度的篱笆将剩余的树围起来,求要砍树的最小总价值. 因为树的个数最多为15个很容易想到用二进制数表示树的状态进行遍历. #include&l ...
- POJ 3348 Cows 凸包面积
题目大意:连接个点,求围成的面积并除以50(向下取整) 题目思路:就是求凸包面积:按逆时针方向为凸包上每条边指定方向,对于每条边AB,累加(AXB)/2的值. #include<cstdio&g ...
最新文章
- sqlserver 与 mysql 联合更新两个表 区别
- 将h.264视频流封装成flv格式文件(一.flv格式)
- C语言希尔排序(解析)
- 轻量级DAO层实践初体验
- php写实体类,自动生成实体类(方式一)
- Golang 规则引擎原理及实战
- 5个IO口实现25个按键的扫描,他做到了!堪称一绝!
- 朝鲜时蔬(分数据点写算法+毒瘤数学)
- linux windows 域,linux加入windows域之完美解决方案
- python manager详解_python 多进程共享全局变量之Manager()详解
- 《是碰巧还是执着?python所阅读的每一场知识点,唯一的共同点就是——参赛选手中,有python之socket编程!》
- java中什么是字节流和字符流_java中字节流与字符流的区别是什么
- 阿里云 远程 mysql_阿里云 远程mysql
- Windows Moblie 笔迹图板开发
- 设计模式——组合设计模式
- Excel内容自动翻译
- 数字化背景下的经济社会发展的新特征 新趋势
- canvas 基础系列(一)之实现抽奖刮刮卡(橡皮擦)
- 教你文件重命名快速操作
- 关于摄影的若干个命题