POJ 2420 A Star not a Tree? (模拟退火)

2015-01-27 10:08:19 · 作者: · 浏览: 9

题目地址:POJ 2420

今天在比赛遇到了这题。。于是现场学了一下模拟退火。。。。

这题是先初始化为一个点,然后不断趋近距离和最短的点。还是挺简单的。。

代码如下:

#include 
  
   
#include 
   
     #include 
    
      #include 
     
       #include 
      
        #include 
       
         #include 
        
          #include 
         
           #include 
           #include 
           
             #include 
            
              using namespace std; #define LL __int64 const int INF=0x3f3f3f3f; int n; struct point { int x, y; }dian[200]; double dist(point a, point b) { return sqrt((a.x-b.x)*(a.x-b.x)*1.0+(a.y-b.y)*(a.y-b.y)); } double juhe(point x) { int i; double z=0; for(i=0;i
             
              0.2) { flag=1; while(flag) { flag=0; point now; now.x=st.x+step; now.y=st.y; s=juhe(now); if(d>s) { flag=1; d=s; ed=now; } now.x=st.x-step; now.y=st.y; s=juhe(now); if(d>s) { flag=1; d=s; ed=now; } now.x=st.x; now.y=st.y+step; s=juhe(now); if(d>s) { flag=1; d=s; ed=now; } now.x=st.x; now.y=st.y-step; s=juhe(now); if(d>s) { flag=1; d=s; ed=now; } if(flag) st=ed; } step/=2.0; } printf("%.0f\n",d); return 0; }