here
今天練習的第二道模擬退火……
\(wa\) 了好幾次發現是最後沒有開根號!!
參考了一下 \(attack\) 的題解,主要思路是先隨機分組,然後隨機選乙個數分到權值最小的組裡來退火。(ps:玄學質數好用)
#includeusing namespace std;
typedef double d;
const int n = 110;
int a[n], pos[n], cnt[n], n, m;
d sum[n], ans = 1e18, x, sum, ans = 1e18;
void sa()
else
t *= 0.99;
}if(ans < ans) ans = ans;
}int main()
x /= m;
int cnt = 1926;
while(cnt--)
cout << fixed << setprecision(2) << sqrt(ans / (d)m);
return 0;
}
感覺這種隨機化演算法很玄學,考試的話還是建議先打完暴力分,如果實在沒思路再考慮模擬退火,不過演算法本身侷限性也很大,適用於資料範圍小一些的題,部分計算幾何也可做。 HAOI2006 均分資料
題目鏈結 經過了14次的提交,終於正大光明的把本題a掉了。演算法 主要思想是模擬退火,具體操作就是,我們對於每乙個生成的排列,用連續分組dp處理此情況下的最小均方差。dp i j 表示前i個數中分j組的最小均方差,dp i j min dp i j dp k 1 j 1 prefix i prefi...
HAOI2006 均分資料
haoi2006 均分資料 題目稍微解釋一下 把n個數以分為m組,計算每一組的和,求得到的這m個數的方差。由於分法是任意的,我們要求這些方差中的最小值 我們先用stl中的函式random shuffle 用來對乙個元素序列進行重新排序 隨機的 眾所周知 如果每個組數的大小都相近的話,方差就越小 所以...
HAOI2006 均分資料
今天下午剛學了模擬退火 借這個題來總結下模擬退火的要注意的問題吧 1 eps 不要設的太大 2 初溫 t 在2000左右就差不多可以了 3 注意題目要求是要求最大值還是最小值,當x 0時 exp x 的取值範圍才是 0 1 4 可以在退完火以後再單獨從當前最優答案下進行微調 5 可以進行多次退火 然...