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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

hdu 1115 计算多边形重心

發布時間:2024/2/28 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hdu 1115 计算多边形重心 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
三角形的重心公式是 x=(x1+x2+x3)/3 ?y=(y1+y2+y3)/3;
錯誤的推廣公式是“質點系重心公式”,即如果認為多邊形的質量僅分布在其頂點上,且均勻分布,則這個公式是對的。 l但是,現在多邊形的質量是均勻分布在其內部區域上的,也就是說,是與面積有關的!
求解方法 l剖分成N個三角形,分別求出其重心和面積,這時可以想象,原來質量均勻分布在內部區域上,而現在質量僅僅分布在這N個重心點上(等假變換),這時候就可以利用剛才的質點系重心公式了。 l不過,要稍微改一改,改成加權平均數,因為質量不是均勻分布的,每個質點代表其所在三角形,其質量就是該三角形的面積(有向面),——這就是權!
lC=sigma(Ai * Ci) / A???? (i=1…N)
本題目要注意精度的問題,除法無疑是最壞精度的所以盡量把除法運算放到最后。

#include<cstring> #include<cstdio> #include<iostream> using namespace std; struct point {double x,y; }p[1000005]; int main() {int t;scanf("%d",&t);while(t--){int n,i;scanf("%d",&n);for(i=0;i<n;i++) scanf("%lf %lf",&p[i].x,&p[i].y);p[n].x=p[0].x;p[n].y=p[0].y;double ansarea=0,ansx=0,ansy=0;for(i=0;i<n;i++){double temparea;temparea=(p[i].x*p[i+1].y-p[i].y*p[i+1].x);double tempx=((p[i].x+p[i+1].x+0)*1.0);double tempy=((p[i].y+p[i+1].y+0)*1.0);ansx+=tempx*temparea;ansy+=tempy*temparea;ansarea+=temparea;}printf("%.2lf %.2lf\n",ansx/ansarea/3.0,ansy/ansarea/3.0);} }

總結

以上是生活随笔為你收集整理的hdu 1115 计算多边形重心的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。