题目链接

大体思路看,黑书。。。其他就是注意搞一个in数组,这样记忆化搜索,貌似比较快。

 #include <cstdio>
#include <cstring>
#include <iostream>
#include <cmath>
using namespace std;
#define INF 0x7fffffff
int p[][],sum[][];
double dp[][][][][];
int in[][][][][];
double s[][][][];
int dfs(int x1,int y1,int x2,int y2,int k)
{
int i;
if(in[x1][y1][x2][y2][k])
return dp[x1][y1][x2][y2][k];
if(k == )
{
in[x1][y1][x2][y2][k] = ;
return dp[x1][y1][x2][y2][k] = s[x1][y1][x2][y2];
}
else
{
double minz = INF;
for(i = x1;i < x2;i ++)
{
minz = min(dfs(x1,y1,i,y2,k-)+s[i+][y1][x2][y2],minz);
minz = min(dfs(i+,y1,x2,y2,k-)+s[x1][y1][i][y2],minz);
}
for(i = y1;i < y2;i ++)
{
minz = min(dfs(x1,y1,x2,i,k-)+s[x1][i+][x2][y2],minz);
minz = min(dfs(x1,i+,x2,y2,k-)+s[x1][y1][x2][i],minz);
}
in[x1][y1][x2][y2][k] = ;
return dp[x1][y1][x2][y2][k] = minz;
}
}
int main()
{
int i,j,k,u,v,n,temp;
scanf("%d",&n);
temp = ;
for(i = ;i <= ;i ++)
{
for(j = ;j <= ;j ++)
{
scanf("%d",&p[i][j]);
temp += p[i][j];
}
}
for(i = ;i <= ;i ++)
{
for(j = ;j <= ;j ++)
{
for(k = ;k <= ;k ++)
{
for(u = ;u <= ;u ++)
{
for(v = ;v <= n;v ++)
dp[i][j][k][u][v] = INF;
}
}
}
}
for(i = ;i <= ;i ++)
{
for(j = ;j <= ;j ++)
sum[i][j] = sum[i-][j] + sum[i][j-] - sum[i-][j-] + p[i][j];
}
for(i = ;i <= ;i ++)
{
for(j = ;j <= ;j ++)
{
for(k = ;k <= ;k ++)
{
for(u = ;u <= ;u ++)
{
s[i][j][k][u] = sum[k][u]+sum[i-][j-]-sum[i-][u]-sum[k][j-];
s[i][j][k][u] *= s[i][j][k][u];
}
}
}
}
printf("%.3f\n",sqrt(dfs(,,,,n)*1.0/n-(temp*1.0/n)*(temp*1.0/n)));
return ;
}

POJ 1191 棋盘分割(DP)的更多相关文章

  1. poj 1191 棋盘分割(dp + 记忆化搜索)

    题目:http://poj.org/problem?id=1191 黑书116页的例题 将方差公式化简之后就是 每一块和的平方 相加/n , 减去平均值的平方. 可以看出来 方差只与 每一块的和的平方 ...

  2. HDU 2517 / POJ 1191 棋盘分割 区间DP / 记忆化搜索

    题目链接: 黑书 P116 HDU 2157 棋盘分割 POJ 1191 棋盘分割 分析:  枚举所有可能的切割方法. 但如果用递归的方法要加上记忆搜索, 不能会超时... 代码: #include& ...

  3. POJ 1191 棋盘分割 【DFS记忆化搜索经典】

    题目传送门:http://poj.org/problem?id=1191 棋盘分割 Time Limit: 1000MS   Memory Limit: 10000K Total Submission ...

  4. poj 1191 棋盘分割 动态规划

    棋盘分割 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 11457   Accepted: 4032 Description ...

  5. POJ 1191 棋盘分割

    棋盘分割 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 11213 Accepted: 3951 Description 将一个 ...

  6. POJ 1191棋盘分割问题

    棋盘分割问题 题目大意,将一个棋盘分割成k-1个矩形,每个矩形都对应一个权值,让所有的权值最小求分法 很像区间DP,但是也不能说就是 我们只要想好了一个怎么变成两个,剩下的就好了,但是怎么变,就是变化 ...

  7. (中等) POJ 1191 棋盘分割,DP。

    Description 将一个8*8的棋盘进行如下分割:将原棋盘割下一块矩形棋盘并使剩下部分也是矩形,再将剩下的部分继续如此分割,这样割了(n-1)次后,连同最后剩下的矩形棋盘共有n块矩形棋盘.(每次 ...

  8. POJ - 1191 棋盘分割 记忆递归 搜索dp+数学

    http://poj.org/problem?id=1191 题意:中文题. 题解: 1.关于切割的模拟,用递归 有这样的递归方程(dp方程):f(n,棋盘)=f(n-1,待割的棋盘)+f(1,割下的 ...

  9. POJ 1191 棋盘分割(DP)

    题目链接 题意 : 中文题不详述. 思路 : 黑书上116页讲的很详细.不过你需要在之前预处理一下面积,那样的话之后列式子比较方便一些. 先把均方差那个公式变形, 另X表示x的平均值,两边平方得 平均 ...

随机推荐

  1. jQuery mobile 开发问题记录

    一.动态加载页面问题 1.存在这样一个页面布局: main.html 为主界面A,B为该页面中的三个page,其中A为splitview左部分页面,B为右半部页面 a1.html 为一个独立的页面 a ...

  2. 【OpenStack】OpenStack系列1之OpenStack本地开发环境搭建&&向社区贡献代码

    加入OpenStack社区 https://launchpad.net/,注册用户(597092663@qq.com/Admin@123) 修改个人信息,配置SSH keys.OpenPGP keys ...

  3. 基础知识《二》java的基本类型

    一.java基本数据类型 Java基本类型共有八种,基本类型可以分为三类,字符类型char,布尔类型boolean以及数值类型byte.short.int.long.float.double.数值类型 ...

  4. css+div绝对定位

    <head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" ...

  5. 转数据库Sharding的基本思想和切分策略

    本文着重介绍sharding的基本思想和理论上的切分策略,关于更加细致的实施策略和参考事例请参考我的另一篇博文:数据库分库分表(sharding)系列(一) 拆分实施策略和示例演示 一.基本思想 Sh ...

  6. [Android Pro] Android fastboot刷机和获取Root权限

    参考文章: https://developers.google.com/android/nexus/images 转载自:    http://www.inexus.co/article-1280-1 ...

  7. Android之自定义控件入门

    本文主要讲述了实现安卓button点击变色与利用ViewPager实现图片自动轮播效果 我伞可以看到在很多应用中,安卓按钮按下时与正常时状态是不同的,这种效果也很容易达到. 第一步:创建XML文件定义 ...

  8. 一、HTML和CSS基础--网页布局--实践--导航条菜单的制作

    案例一:导航菜单的制作 垂直菜单

  9. Xamarin.Android开发实践(十)

    Xamarin.Android之SQLiteOpenHelper 一.前言 在手机中进行网络连接不仅是耗时也是耗电的,而耗电却是致命的.所以我们就需要数 据库帮助我们存储离线数据,以便在用户未使用网络 ...

  10. Mac下Erlang环境安装

    下载源码(地址:http://www.erlang.org/download.html),  传统的三步安装: ./configure ./make sudo make install 备注:在编译系 ...