題目點我
經典的動態規劃題目,首先將標準差公式變形一下: σ=
∑ni=
1(xi
−x¯)
2n−−
−−−−
−−−−
−−√⇒
n(σ2
+x¯2
)=∑i
=1nx
2i由於x¯
是固定的,與分割方案無關,所以求最小的標準差就相當於求最小的平方和的分割方案。定義狀態需要五個維度:描述乙個矩形需要四個維度(左上角座標x1
,y1 和右下角座標x2
,y2 )+要分割的塊數n
dp[x
1][y
1][x
2][y
2][n
]=∑i
=1nx
2i狀態轉移方程如下,其中s[
x1][
y1][
x2][
y2] 表示這塊棋盤權值之和的平方dp
[x1]
[y1]
[x2]
[y2]
[n]=
min(
y1≤h
ori),mi
n(x1
≤ver
t)}
#include
#include
#include
#include
#define inf 100000000
int ans[10][10][10][10][17];
bool vis[10][10][10][10][17];
int matrix[10][10];
int min(int a, int b)
int sum(int x1, int y1, int x2, int y2)
}sum = sum * sum;
ans[x1][y1][x2][y2][1] = sum;
vis[x1][y1][x2][y2][1] = true;
return sum;
}int dp(int x1, int y1, int x2, int y2, int n)
for(vert = x1; vert < x2; vert++)
ans[x1][y1][x2][y2][n] = tmpdp;
vis[x1][y1][x2][y2][n] = true;
return tmpdp;
}int main()
}xbar = xbar / n;
long
double tmp = dp(0, 0, 7, 7, n);
tmp = sqrt((tmp / n) - xbar * xbar);
printf("%.3f\n", tmp);
return
0;}
poj 1191 棋盤分割
棋盤分割 time limit 1000ms memory limit 10000k total submissions 10807 accepted 3798 description 將乙個 的棋盤進行如下分割 將原棋盤割下一塊矩形棋盤並使剩下部分也是矩形,再將剩下的部分繼續如此分割,這樣割了 n...
POJ 1191 棋盤分割
題意 給定一8 8的棋盤,每次沿著邊將棋盤切成兩部份,把一部分放到一邊,再繼續切另一部分,切n 1次得到n個矩形塊,問使n個塊的和能達到的最小方差。題解 顯然可以每次遍歷對矩形塊的橫切和豎切,當dfs到份數等於1,利用二維線段樹組將矩形塊的和求出來返回即可。剪枝 當訪問到同個矩形塊,相同切割份數時,...
棋盤分割 POJ 1191
1 題目型別 dp 概率論。2 解題思路 dp遞推式 以上下切為例 for i x1.x2 sum k x1 y1 x2 y2 min 其中 i 表示切割位置,k 表示切割次數。3 注意事項 遞迴迴圈的呼叫。4 參考部落格 5 實現方法 include iostream include cmath ...