日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

poj 1113 Wall 凸包的应用

發(fā)布時(shí)間:2025/3/21 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 poj 1113 Wall 凸包的应用 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

題目鏈接:poj 1113?? 單調(diào)鏈凸包小結(jié)

題解:本題用到的依然是凸包來(lái)求,最短的周長(zhǎng),只是多加了一個(gè)圓的長(zhǎng)度而已,套用模板,就能搞定;

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()//尋找關(guān)鍵點(diǎn),來(lái)求出最短的周長(zhǎng) 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;//第一個(gè)點(diǎn)存了兩次; 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 //其實(shí)最后只需要加上一個(gè)圓的周長(zhǎng)就ok了,多邊形的外角和為360度; 57 ans1+=2*3.141592653*n; 58 printf("%.0f\n",ans1);//G++ 這個(gè)才能過(guò)不能用(.0l%),C++可以 59 return 0; 60 }


?

?

轉(zhuǎn)載于:https://www.cnblogs.com/lovychen/p/3990131.html

總結(jié)

以上是生活随笔為你收集整理的poj 1113 Wall 凸包的应用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。