博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【解题报告】【HDOJ1392】【Graham凸包】Surround the Trees
阅读量:5984 次
发布时间:2019-06-20

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

题目链接:

典型凸包

1.当只有一个点时 输出时0.00

2.当只有两个点时 输出时两个点的距离

3.当n>2 且共线时,输出需要*2,(这个是题目的奇怪之处,当只有2点时不用)

 

1 #include
2 #include
3 #include
4 #define max(a,b) (a>b?b:a) 5 6 struct node{ 7 double x,y; 8 int i; 9 }; 10 11 struct node stack[101]; 12 long int point1,point2; 13 double x[101]; 14 double y[101]; 15 16 void instack(int x,int y,int i);//入栈 17 void outstack();//出栈 18 19 int main() 20 { 21 long int n,i,j,t1; 22 double sum,a,b,x1,x2,y1,y2,t,p; 23 //freopen("1.txt","r",stdin); 24 25 while(scanf("%ld",&n)!=EOF&&n) 26 { 27 28 t1=0;//代表着y0 29 for(i=0;i
x[t1]&&y[i]==y[t1]))//寻找Y最小的点,若同,则寻X最大 33 t1=i; 34 } 35 36 if(n==1) { printf("0.00\n"); continue;}//当只有一个点时 37 if(n==2) //当只有两个点时 38 { 39 a=(x[1]-x[0])*(x[1]-x[0]); 40 b=(y[1]-y[0])*(y[1]-y[0]); 41 printf("%.2lf\n",sqrt(a+b)); 42 continue; 43 } 44 45 //将y0点放在x[0],y[0]; 46 p=x[t1]; 47 x[t1]=x[0]; 48 x[0]=p; 49 p=y[t1]; 50 y[t1]=y[0]; 51 y[0]=p; 52 53 //将x[0],y[0]作为标准 54 for(i=1;i
=0) 93 { 94 outstack(); 95 continue; 96 } 97 else 98 { 99 instack(x[i],y[i],i);100 }101 i++;102 }103 104 //计算路径长度105 sum=0;106 for(i=1;i<=point2;i++)107 {108 109 a=(stack[i].x-stack[i-1].x)*(stack[i].x-stack[i-1].x);110 b=(stack[i].y-stack[i-1].y)*(stack[i].y-stack[i-1].y);111 sum+=sqrt(a+b);112 }113 114 //输出115 if(point2==1) printf("%.2lf\n",sum*2);//当n>2 且全部共线116 else//正常情况的输出117 {118 a=stack[point2].x*stack[point2].x;119 b=stack[point2].y*stack[point2].y;120 sum+=sqrt(a+b);121 printf("%.2lf\n",sum);122 }123 124 }125 return 0;126 }127 128 //***********下面为子函数***************129 void instack(int x,int y,int i)//入栈130 {131 point1++;132 point2++;133 stack[point2].x=x;134 stack[point2].y=y;135 stack[point2].i=i;136 }137 138 void outstack()//出栈139 {140 point1--;141 point2--;142 }

 

转载于:https://www.cnblogs.com/codingfengshen/archive/2012/07/23/2605322.html

你可能感兴趣的文章
复习java基础第七天(反射)
查看>>
下载 ....aar jitpack.io 打不开。
查看>>
c语言显示八进制和十六进制数
查看>>
Opera技术布道专家谢子斌谈HTML5
查看>>
一起谈.NET技术,Discuz!NT 缓存设计简析 [原创]
查看>>
browser-sync默认地址如何转成127.0.0.1
查看>>
学习php脚本
查看>>
Git使用
查看>>
Spark之键值RDD转换(转载)
查看>>
Ajax学习二:异步请求
查看>>
2017-2018-2 20155225《网络对抗技术》实验二+ 后门进阶
查看>>
SQL报错 个人收集
查看>>
BZOJ 1257: [CQOI2007]余数之和sum【神奇的做法,思维题】
查看>>
关于int *a[常量]与int (*a)[常量]的分析与区分(详解)
查看>>
Nodejs 第一站
查看>>
遇到女神应该使用什么样的暗恋思维
查看>>
(转)李明博:我的12年等于24年
查看>>
双向链接表 linux
查看>>
从 1.1.0 升级到 1.2.0 的注意事项
查看>>
用Moq让单元测试变得更简单
查看>>