總時間限制:
1000ms
記憶體限制:
65536kb
描述將乙個8*8的棋盤進行如下分割:將原棋盤割下一塊矩形棋盤並使剩下部分也是矩形,再將剩下的部分繼續如此分割,這樣割了(n-1)次後,連同最後剩下的矩形棋盤共有n塊矩形棋盤。(每次切割都只能沿著棋盤格仔的邊進行)
原棋盤上每一格有乙個分值,一塊矩形棋盤的總分為其所含各格分值之和。現在需要把棋盤按上述規則分割成n塊矩形棋盤,並使各矩形棋盤總分的均方差最小。
均方差請程式設計對給出的棋盤及n,求出o'的最小值。
輸入第1行為乙個整數n(1 < n < 15)。
第2行至第9行每行為8個小於100的非負整數,表示棋盤上相應格仔的分值。每行相鄰兩數之間用乙個空格分隔。
輸出僅乙個數,為o'(四捨五入精確到小數點後三位)。
樣例輸入
3樣例輸出1 1 1 1 1 1 1 3
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 0
1 1 1 1 1 1 0 3
1.633**
noi 99
1/*2z3*/4 #include5 #include6 #include7 #include8
#define inf 0x3f3f3f3f
9using
namespace
std;
10int
n;11
int s[9][9][9][9],c[9][9
];12
int f[20][9][9][9][9
];13
int add(int x1,int y1,int x2,int
y2 )
1421
int dfs(int k,int x1,int y1,int x2,int
y2)2235}
36if(y1
3745}46
return
f[k][x1][y1][x2][y2];47}
48int
main()
4964 dfs(n,1,1,8,8
);65
double
x,ans;
66 x=1.*add(1,1,8,8
);67 x=(x/n)*(x/n);
68//
cout<69 ans=sqrt(1.0*f[n][1][1][8][8]/n-x);
70 printf("
%.3f\n
",ans);
71return0;
72 }
#include #include1 1 1 1 1 1 1 3#include
#include
#define min(a,b) a#define inf 0x3f3f3f3f
#define n 20
using
namespace
std;
int dp[n][10][10][10][10],s[10][10][10][10],c[10][10
];int add(int x1,int y1,int x2,int
y2)int dfs(int k,int x1,int y1,int x2,int
y2) }
if(y2>y1) //
至少有兩列才能豎著切
}return
dp[k][x1][y1][x2][y2];
}int
main()
dfs(n,
1,1,8,8
);
double
x,ans;
x=1.*add(1,1,8,8
); x=(x/n)*(x/n);
cout
ans=sqrt(1.0*dp[n][1][1][8][8]/n-x);
printf(
"%.3f\n
",ans);
return0;
}
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 0
1 1 1 1 1 1 0 3
狀態的描述:
1.矩形區域,採用excel的方法
左上角(x1,y1):右下角(x2,y2)
2.狀態:
f(i,x1,y1,x2,y2)表示
把(x1,y1):(x2,y2)分割成i塊的最小segma((x-
x)^2)。
對任意的矩形區域,i=1時的f值可以直接求得。
3.狀態轉移:f(i,x1,y1,x2,y2)
(1)列舉x1<=x(x1,y1):(x,y2) (x+1,y1):(x2,y2)
把(x1,y1):(x,y2)分割成(i-1)矩形:f(i-1,x1,y1,x,y2)
(x+1,y1):(x2,y2)作為1個矩形: f(1,x+1,y1,x2,y2)
或者f(1,x1,y1,x,y2)+f(i-1,x+1,y1,x2,y2)
(2)同理,列舉y1<=y(x1,y1):(x2,y) (x1,y+1):(x2,y2)
f(i-1,x1,y1,x2,y)+f(1,x1,y+1,x2,y2)
f(1,x1,y1,x2,y)+f(i-1,x1,y+1,x2,y2)
posted @
2016-04-09 10:26
minepressure 閱讀(
...)
編輯收藏
NOI1999 poj1191 棋盤分割
description 將乙個 的棋盤進行如下分割 將原棋盤割下一塊矩形棋盤並使剩下部分也是矩形,再將剩下的部分繼續如此分割,這樣割了 n 1 次後,連同最後剩下的矩形棋盤共有n塊矩形棋盤。每次切割都只能沿著棋盤格仔的邊進行 原棋盤上每一格有乙個分值,一塊矩形棋盤的總分為其所含各格分值之和。現在需要...
F 棋盤分割
將乙個 的棋盤進行如下分割 將原棋盤割下一塊矩形棋盤並使剩下部分也是矩形,再將剩下的部分繼續如此分割,這樣割了 n 1 次後,連同最後剩下的矩形棋盤共有n塊矩形棋盤。每次切割都只能沿著棋盤格仔的邊進行 原棋盤上每一格有乙個分值,一塊矩形棋盤的總分為其所含各格分值之和。現在需要把棋盤按上述規則分割成n...
遞迴 棋盤分割問題
language default 棋盤分割 time limit 1000ms memory limit 10000k total submissions 11819 accepted 4175 description 將乙個 的棋盤進行如下分割 將原棋盤割下一塊矩形棋盤並使剩下部分也是矩形,再將剩...