BZOJ 1048 [HAOI2007]分割矩阵 记忆化搜索
2013-03-05 21:34
211 查看
数据范围果断小,果断暴力。。。
View Code
View Code
#include <iostream> #include <cstring> #include <cstdio> #include <cstdlib> #include <algorithm> #include <cmath> #define N 14 #define INF 1e9 using namespace std; int a,b,n; double sm ,map ,dp ,sum,sumb; inline void read() { scanf("%d%d%d",&a,&b,&n); for(int i=1;i<=a;i++) for(int j=1;j<=b;j++) scanf("%lf",&map[i][j]),sum+=map[i][j]; sumb=sum/n; for(int i=1;i<=a;i++) for(int j=1;j<=b;j++) sm[i][j]=sm[i-1][j]+sm[i][j-1]-sm[i-1][j-1]+map[i][j]; } inline double dfs(int x1,int y1,int x2,int y2,int cs) { double &res=dp[x1][y1][x2][y2][cs]; if(res<INF) return res; if(cs==0) { res=(sm[x2][y2]+sm[x1-1][y1-1]-sm[x1-1][y2]-sm[x2][y1-1])-sumb; res=res*res; return res; } for(int i=x1;i<x2;i++) for(int j=0;j<=cs-1;j++) res=min(res,dfs(x1,y1,i,y2,j)+dfs(i+1,y1,x2,y2,cs-j-1)); for(int i=y1;i<y2;i++) for(int j=0;j<=cs-1;j++) res=min(res,dfs(x1,y1,x2,i,j)+dfs(x1,i+1,x2,y2,cs-j-1)); return res; } inline void go() { for(int i=0;i<=10;i++) for(int j=0;j<=10;j++) for(int k=0;k<=10;k++) for(int p=0;p<=10;p++) for(int q=0;q<=10;q++) dp[i][j][k][p][q]=INF; dfs(1,1,a,b,n-1); printf("%.2lf\n",sqrt(dp[1][1][a][b][n-1]/n)); } int main() { read(),go(); return 0; }
相关文章推荐
- [BZOJ 1048] [HAOI2007] 分割矩阵 【记忆化搜索】
- bzoj 1048: [HAOI2007]分割矩阵 (记忆化搜索)
- 【记忆化搜索】bzoj1048 [HAOI2007]分割矩阵
- BZOJ 1048: [HAOI2007]分割矩阵 记忆化搜索,二维前缀和
- bzoj 1048: [HAOI2007]分割矩阵(记忆化搜索)
- 【BZOJ】【1048】【HAOI2007】分割矩阵
- BZOJ1048 [HAOI2007]分割矩阵
- 【矩阵DP】BZOJ1048(HAOI2007)[分割矩阵]题解
- bzoj1048 [HAOI2007]分割矩阵
- [BZOJ1048][HAOI2007]分割矩阵(数学相关+记搜)
- bzoj1048[HAOI2007]分割矩阵
- bzoj1048: [HAOI2007]分割矩阵
- 1048: [HAOI2007]分割矩阵——记忆化搜索
- 【BZOJ1048】【HAOI2007】分割矩阵
- 【BZOJ 1048】 [HAOI2007]分割矩阵
- bzoj1048: [HAOI2007]分割矩阵 记忆化搜索
- bzoj千题计划186:bzoj1048: [HAOI2007]分割矩阵
- BZOJ 1048 [HAOI2007]分割矩阵
- 【BZOJ】1048: [HAOI2007]分割矩阵
- 1048: [HAOI2007]分割矩阵 - BZOJ