HAOI2006 均分資料 dp,隨機化

2022-06-07 02:00:11 字數 459 閱讀 5010

將 \(n\) 個數分成 \(m\) 組,使得各組資料的數值和最平均,即各組的均方差最小。\(n\leq 20,m \leq 6\)

考慮如果是按順序分段,那麼設 \(f[i]\) 表示前 \(i\) 個數積攢的最小方差,dp即可

std::random_shuffle隨機若干順序,可以證明在很大概率上能隨到答案

當然內部也可以貪心,每次盡量使得每個集合的總和相等

#include using namespace std;

const int n = 25;

int n,m;

double a[n],f[n][n],s[n];

signed main() }}

ans=min(ans,f[n][m]);

}printf("%.2lf",sqrt(ans/m));

}

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 可以進行多次退火 然...