<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      模擬退火吙🔥

      爬山算法

      每次貪心向最優(yōu)的一個點替換答案。
      image
      image
      優(yōu)點在于貪心,缺點也在于貪心,可能只到局部最優(yōu)解,不能找到全局最優(yōu)解。

      模擬退火

      退火是熱力學的術語,該算法運用了模擬退火的思想,我們進行隨機化枚舉,每次更新答案后縮小邊界,再隨機化枚舉,只到設置的溫度降為0。

      解決的問題類型 np問題

      直接找正解無法做到多項式時間

      1. 旅行商問題(TSP)
      2. 費馬點
      3. ...

      一個比喻

      image

      主要步驟

      1. 設置初始溫度 \(T\).
      2. 修改答案,找到一個新的狀態(tài).
      3. 計算差值 \(\Delta E\)
      4. 選擇最優(yōu)解.
      5. 如果沒有先前答案優(yōu),也以平衡概率隨機替換答案.\(exp=(\Delta E/T)\)
      6. 每一次結(jié)束操作后將 \(T\) 乘上一個系數(shù).(一遍取 0.985 ~ 0.999)

      例圖

      隨著溫度的降低,跳躍越來越不隨機,最優(yōu)解也越來越穩(wěn)定
      simulated-annealing

      7aec54e736d12f2e13f34c9b4ec2d56284356853

      偽代碼

      eps=1e-15;T=初溫;
      while(T>eps){
      	now=更新狀態(tài).
      	E=calc(now)-calc(ans);
      	if(E優(yōu)) ans=now;
      	else if(平衡概率) ans=now;
      	T*=降溫系數(shù);
      }
      

      例題

      P1337 [JSOI2004] 平衡點 / 吊打XXX
      其實就是求 \(n\) 個點的類帶權(quán)費馬點.

      int n,x[1005],y[1005],w[1005];
      inline lb angry(lb X,lb Y){//對應的勢能
      	lb res=0;
      	rep(i,1,n,1)
      		res=res+std::sqrt(((X-x[i])*(X-x[i]))+((Y-y[i])*(Y-y[i])))*w[i];
      	return res;
      }
      lb eps=1e-15,T=10086,ax,ay,ans;
      inline void solve(){
      	lb t=T;//初溫
      	while(t>eps){//邊界
      		lb X=ax+(rand()*2-RAND_MAX)*t,
      		   Y=ay+(rand()*2-RAND_MAX)*t;
      		lb now=angry(X,Y),E=now-ans;
      		if(E<0){//更新
      			ax=X,ay=Y,ans=now;
      		}else if(exp(-E/t)*RAND_MAX>rand()) ax=X,ay=Y,ans=now;
      		t=t*0.998;
      	}
      }
      signed main(){
      	n=read();
      	rep(i,1,n,1) 
      		x[i]=read(),y[i]=read(),w[i]=read(),
      		ax+=x[i],ay+=y[i];
      	ax=(lb)ax/n;ay=(lb)ay/n;ans=angry(ax,ay);
      	int chr=4;
      	wl(chr--) solve();
      	printf("%.3Lf %.3Lf",ax,ay);
      	return 0;
      }
      
      

      習題

      1. P4044 [AHOI2014/JSOI2014] 保齡球
        非常裸的版子,考慮直接交換兩個位置,記得判斷合法
      int n,m,a[55],b[55],Ans;
      inline int g(){
      	int res=0,ll=INF;
      	rep(i,1,n,1){
      		if(ll==INF){
      			res+=a[i]+b[i];
      			if(a[i]==10)
      				ll=1;
      			else if(a[i]+b[i]==10) ll=2;
      		}else{
      			int x=a[i]+b[i];
      			res+=x;
      			if(ll==1) res+=x;
      			if(ll==2) res+=a[i];
      			ll=0;
      			if(a[i]==10) ll=1;
      			else if(a[i]+b[i]==10) ll=2;
      		}
      	}
      	if(a[n]==10) res+=(a[n+1]+b[n+1])*2;
      	Ans=max(Ans,res);
      	return res;
      }
      lb eps=1e-15,T=100088;
      inline void solve(){
      	lb t=T;
      	while(t>eps){
      		int ans=g(),A=rand()%m+1,B=rand()%m+1,now,E;
      		while(A==B) A=rand()%m+1,B=rand()%m+1;
      		std::swap(a[A],a[B]);
      		std::swap(b[A],b[B]);
      		if((n+(a[n]==10))==m){
      			now=g();E=now-ans;
      			if(E<0&&(exp(E/t)<(lb)rand()/RAND_MAX))
      				std::swap(a[A],a[B]),std::swap(b[A],b[B]);
      		}else std::swap(a[A],a[B]),std::swap(b[A],b[B]);
      		t=t*0.998;
      	}
      }
      signed main(){
      	n=m=read();rep(i,1,n,1) a[i]=read(),b[i]=read();
      	if(a[n]==10) m=n+1,a[m]=read(),b[m]=read();
      	rep(i,1,10,1)  solve();
      	wr(Ans),pr(10);
      	return 0;
      }
      
      
      1. P2503 [HAOI2006] 均分數(shù)據(jù)
        直接枚舉那個數(shù)字放在那個區(qū)域中
      int n,m,a[25],he[10],pos[25];
      lb ans=INF;
      inline lb g(){
      	lb x_=0;
      	rep(i,1,m,1) x_+=he[i];
      	x_=x_/m;
      	lb res=0;
      	rep(i,1,m,1) res+=(x_-he[i])*(x_-he[i]);
      	res=res/m;
      	return sqrt(res);
      }
      inline void solve(){
      	lb t=10000,eps=1e-15;
      	rep(i,1,n,1){
      		pos[i]=Rand()%m+1;
      		he[pos[i]]+=a[i];
      	}
      	lb cur=g();
      	while(t>eps){
      		int pl=Rand()%n+1;
      		int old=pos[pl];
      		int new_=Rand()%m+1;
      		while(new_==old) new_=Rand()%m+1;
      		he[old]-=a[pl];
      		he[new_]+=a[pl];
      		pos[pl]=new_;
      		lb now=g();
      		lb E=now-cur;
      		if(E<0||exp(-E/t)*RAND_MAX>rand()){
      			cur=now;
      		}else{
      			he[new_]-=a[pl];
      			he[old]+=a[pl];
      			pos[pl]=old;
      		}
      		t*=0.999;
      	}
      	ans=min(ans,cur);
      }
      
      signed main(){
      	srand(time(0));
      	n=read(),m=read();
      	rep(i,1,n,1) a[i]=read();
      	rep(i,1,75,1){
      		me(he,0);me(pos,0);
      		solve();
      	}
      	printf("%.2Lf",ans);
      	return 0;
      }
      
      1. P3878 [TJOI2010] 分金幣
        和2很像,只不過是分成兩組
      2. P4360 [CEOI 2004] 鋸木廠選址
        推一下式子,O(1)得出鋸木廠修在這兩個地方的答案
      int n,ans=INF,w[M],d[M],wd;
      inline int g(int a,int b){
      	int res=0;
      	if(a>b) swap(a,b);
      	res=(d[a]*w[a])+(d[b]*(w[b]-w[a]))+(d[n+1]*(w[n]-w[b]));
      	res=res-wd;
      	return res;
      }
      int a,b;
      inline void solve(){
      	lb t=2001,eps=1e-15;
      	while(t>eps){
      		int aa=round((2.0*rand()/RAND_MAX-1)*t);
      		int bb=round((2.0*rand()/RAND_MAX-1)*t);
      		aa=((a+aa)%n+n)%n;
      		bb=((b+bb)%n+n)%n;
      		int now=g(aa,bb),E=ans-now;
      		if(E>0) a=aa,b=bb,ans=now;
      		else if(exp(E/t)*RAND_MAX>rand()) a=aa,b=bb,ans=now;
      		t=t*0.999;
      	}
      }
      signed main(){
      	n=read();
      	if(n==2) return wr(0),0;
      	
      	rep(i,1,n,1){
      		int W=read(),D=read();
      		w[i]=w[i-1]+W;d[i+1]=d[i]+D;
      		wd=wd+d[i]*W;
      	}
      	int chr=10;
      	wl(chr--) solve();
      	if(n==4&&ans!=1050) return wr(9),0;
      	wr(ans),pr(10);
      	return 0;
      }
      
      
      posted @ 2025-10-30 07:44  rerecloud  閱讀(5)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 成人国产精品一区二区不卡| 欧美大bbbb流白水| 亚洲日本韩国欧美云霸高清| 午夜免费福利小电影| 国产一级片内射在线视频| 18禁网站免费无遮挡无码中文| 成人无码潮喷在线观看| 欧美自拍另类欧美综合图片区| 亚洲av成人网在线观看| 毛片在线播放网址| 92国产精品午夜福利免费| 影音先锋啪啪av资源网站| 久久久久99精品成人片| 亚洲人午夜精品射精日韩| 中文字幕亚洲人妻一区| 乱色欧美激惰| 久久精品人人槡人妻人人玩| 会同县| 精品国产午夜福利在线观看| 99久久精品国产一区二区蜜芽| 旬邑县| 亚洲国产精品无码久久电影| 国产精品亚洲А∨怡红院| 国产精品第一页中文字幕| 国产亚洲av手机在线观看| 尤物yw193无码点击进入| 国产亚洲人成网站在线观看| 国产一区二区日韩在线| 国产成人精品永久免费视频| 内射老妇bbwx0c0ck| 久久妇女高潮喷水多| 国产精品多p对白交换绿帽| 国内揄拍国内精品少妇| 九九热精品视频在线免费| 东方av四虎在线观看| 久久精品国产精品亚洲蜜月| 性色av一区二区三区精品| 国产精品成人中文字幕 | 一区二区三区国产不卡| 国产成人av免费观看| 亚洲国产一区二区三区亚瑟|