1、題目型別:dp、概率論。
2、解題思路:dp遞推式(以上下切為例):
for i=x1...x2
sum[k][x1][y1][x2][y2]=min};
其中 i 表示切割位置,k 表示切割次數。
3、注意事項:遞迴迴圈的呼叫。
4、參考部落格:
5、實現方法:
#include<
iostream
>
#include
<
cmath
>
using
namespace
std;
const
intinf
=0xffffff
;int
map[9][
9],bak[9][
9][9][
9];double
sum[
16][9][
9][9][
9];//返回區域的和的平方
intgetsum(
intx1,
inty1,
intx2,
inty2)
//記錄任何矩形區域的和的平方
void
init()
double
getmin(
double
x,double
y)double
dp(int
k,int
x1,int
y1,int
x2,int
y2)//
進行左右切
for( j
=y1; j
<
y2;
++j )
return
sum[k][x1][y1][x2][y2];
}int
main()
}init();
memset(sum,-1
,sizeof
(sum));
all/=
n;dp(n,1,
1,8,
8);ans=
sqrt(sum[n][1][
1][8][
8]/n
-all
*all);
printf(
"%.3f\n
",ans);
return1;
}
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 棋盤分割
題目點我 經典的動態規劃題目,首先將標準差公式變形一下 ni 1 xi x 2n n 2 x 2 i 1nx 2i由於x 是固定的,與分割方案無關,所以求最小的標準差就相當於求最小的平方和的分割方案。定義狀態需要五個維度 描述乙個矩形需要四個維度 左上角座標x1 y1 和右下角座標x2 y2 要分割...