小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

【BZOJ3680】吊打XXX 計算幾何 廣義費馬點+模擬退火(爬山算法)

 imelee 2018-04-07

做題之前:

令一個點到一個分身的距離為兩點間的幾何距離*這個分身的重力,則到所有分身的距離之和最小的點即為所求。

因此題各種參數(shù)實在太恐怖,使得模擬退火TLE/WA無數(shù)次。強烈建議此題更名為“吊打出題人”。

在此感謝網(wǎng)上的大神給了我們調(diào)參數(shù)的偉大參考!??!

吊打XXX C++代碼實現(xiàn):

  1. #include <cmath>  
  2. #include <cstdio>  
  3. #include <cstring>  
  4. #include <iostream>  
  5. #include <algorithm>  
  6. #define N 10010  
  7. using namespace std;  
  8. int n,x[N],y[N],w[N];double dis,ansx,ansy,xx,yy;  
  9. double dist(double x1,double x2,double y1,double y2)  
  10. {  
  11.     return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));  
  12. }  
  13. int main()  
  14. {  
  15.     cin>>n;  
  16.     for(int i=1;i<=n;i++)  
  17.         scanf("%d%d%d",&x[i],&y[i],&w[i]);  
  18.     double t=1000;  
  19.     for(int i=1;i<=n;i++)  
  20.         ansx+=x[i]*w[i],ansy+=y[i]*w[i];  
  21.     ansx/=n,ansy/=n;  
  22.     while(t>0.000000001)  
  23.     {  
  24.         xx=yy=0;  
  25.         for(int i=1;i<=n;i++)  
  26.             dis=dist(ansx,x[i],ansy,y[i]),  
  27.             xx+=(x[i]-ansx)*w[i]/dis,  
  28.             yy+=(y[i]-ansy)*w[i]/dis;  
  29.         ansx+=xx*t,ansy+=yy*t;  
  30.         t=t>0.5?t*0.5:t*0.98;  
  31.     }  
  32.     printf("%.3lf %.3lf\n",ansx,ansy);  
  33.     return 0;  
  34. }  


    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多