poj 1191 棋盘分割
2014-06-10 21:31
411 查看
http://poj.org/problem?id=1191
这道题先是预处理,在dp处理。
dp[k][x1][y1][x2][y2]=min(min(dp[k+1][x1][y1][a][y2]+s[a+1][y1][x2][y2],dp[k+1][a+1][y1][x2][y2]+s[x1][y1][a][y2]),min(dp[k+1][x1][y1][x2][b]+s[x1][b][x2][y2],dp[k+1][x1][b+1][x2][y2]+s[x1][y1][x2][b]);
View Code
这道题先是预处理,在dp处理。
dp[k][x1][y1][x2][y2]=min(min(dp[k+1][x1][y1][a][y2]+s[a+1][y1][x2][y2],dp[k+1][a+1][y1][x2][y2]+s[x1][y1][a][y2]),min(dp[k+1][x1][y1][x2][b]+s[x1][b][x2][y2],dp[k+1][x1][b+1][x2][y2]+s[x1][y1][x2][b]);
#include <cstdio> #include <cmath> #include <cstring> #include <iostream> #include <algorithm> using namespace std; const int inf=1<<30; int dp[15][15][15][15][15]; int g[20][20]; int ans[20][20][20][20]; int n; void inti() { for(int x=0; x<9; x++) { for(int y=0; y<9; y++) { for(int x1=x; x1<9; x1++) { for(int y1=y; y1<9; y1++) { int c=0; for(int i=x; i<=x1; i++) { for(int j=y; j<=y1; j++) { c+=g[i][j]; } } ans[x][y][x1][y1]=c*c; ans[x1][y1][x][y]=c*c; ans[x][y1][x1][y]=c*c; ans[x1][y][x][y1]=c*c; } } } } } int deal(int k,int x1,int y1,int x2,int y2) { if(dp[k][x1][y1][x2][y2]>=0) return dp[k][x1][y1][x2][y2]; if(k==n-1) return ans[x1][y1][x2][y2]; dp[k][x1][y1][x2][y2]=inf; int ans1=0; for(int a=x1; a<x2; a++) { ans1=min(deal(k+1,x1,y1,a,y2)+ans[a+1][y1][x2][y2],deal(k+1,a+1,y1,x2,y2)+ans[x1][y1][a][y2]); dp[k][x1][y1][x2][y2]=min(dp[k][x1][y1][x2][y2],ans1); } for(int b=y1; b<y2; b++) { ans1=min(deal(k+1,x1,y1,x2,b)+ans[x1][b+1][x2][y2],deal(k+1,x1,b+1,x2,y2)+ans[x1][y1][x2][b]); dp[k][x1][y1][x2][y2]=min(dp[k][x1][y1][x2][y2],ans1); } return dp[k][x1][y1][x2][y2]; } int main() { while(scanf("%d",&n)!=EOF) { memset(dp,-1,sizeof(dp)); int cnt=0; for(int i=0; i<8; i++) { for(int j=0; j<8; j++) { scanf("%d",&g[i][j]); cnt+=g[i][j]; } } inti(); deal(0,0,0,7,7); printf("%.3f\n",sqrt((dp[0][0][0][7][7]*1.0)/n-((cnt*1.0)/n)*((cnt*1.0)/n))); } return 0; }
View Code
相关文章推荐
- POJ 1191 棋盘分割
- 【动态规划+递归】:poj1191,棋盘分割
- poj 1191 棋盘分割 公式转换,横纵方向动态规划
- poj-1191- 棋盘分割dp
- POJ-1191-棋盘分割(动态规划)
- POJ 1191 棋盘分割
- POJ 1191 && HDU 2517 棋盘分割(dp)
- POJ 1191 棋盘分割(记忆化搜索)
- poj 1191(棋盘分割)
- POJ 1191 棋盘分割
- POJ 1191 棋盘分割(记忆化搜)
- 【POJ 1191】 棋盘分割(DP)
- poj1191 棋盘分割 dp
- poj 1191 棋盘分割
- [DP+记忆化搜索]poj1191 棋盘分割
- poj1191 棋盘分割(记忆化搜索)
- POJ1191 棋盘分割
- [poj 1191] 棋盘分割 划分型DP
- poj1191--棋盘分割(dp)
- 经典问题六.【二维的区间dp】棋盘分割 poj 1191