题目链接

题意 : 中文题不详述。

思路 : 黑书上116页讲的很详细。不过你需要在之前预处理一下面积,那样的话之后列式子比较方便一些。

先把均方差那个公式变形,

另X表示x的平均值,两边平方得

平均值是一定的,所以只要让每个矩形的总分的平方和尽量小即可。左上角坐标为(x1,y1)右下角坐标为(x2,y2)的棋盘,设总和为s[][][][],切割k次以后得到k+1块矩形的总分平方和是d[k][][][][],则可以沿着横线切也可以沿着竖线切,然后选一块接着切,递归下去,状态转移方程

d[k,x1,y2,x2,y2] = min{min{d[k-1,x1,y1,a,y2]+s[a+1,y1,x2,y2],d[k-1,a+1,y1,x2,y2]+s[x1,y1,a,y2]}(x1<=a<x2),min{d[k-1,x1,y2,x2,b]+s[x1,b+1,x2,y2],d[k-1,x1,b+1,x2,y2]+s[x1,y1,x2,b]},(y1<=b<y2)}

 //
#include <stdio.h>
#include <iostream>
#include <cmath> using namespace std ; double dp[][][][][] ,s[][] ;
int n ; double ss(int x1,int y1,int x2,int y2)
{
double sss = s[x2][y2]-s[x1-][y2]-s[x2][y1-]+s[x1-][y1-] ;
return sss * sss ;
} double DFS(int k,int x1,int y1,int x2,int y2)
{
if(k == ) return ss(x1,y1,x2,y2) ;
if(fabs(dp[k][x1][y1][x2][y2]) > 1e-) return dp[k][x1][y1][x2][y2] ;
double minn = << ;
for(int i = x1 ; i < x2 ; i++)
minn = min(minn,min(DFS(k-,x1,y1,i,y2)+ss(i+,y1,x2,y2),DFS(k-,i+,y1,x2,y2)+ss(x1,y1,i,y2))) ;
for(int i = y1 ; i < y2 ; i++)
minn = min(minn,min(DFS(k-,x1,y1,x2,i)+ss(x1,i+,x2,y2),DFS(k-,x1,i+,x2,y2)+ss(x1,y1,x2,i))) ;
dp[k][x1][y1][x2][y2] = minn ;
return minn ;
}
int main()
{
scanf("%d",&n) ;
int x ;
//memset(s,0,sizeof(s)) ;
for(int i = ; i <= ; i++)
for(int j = ; j <= ; j++)
{
scanf("%d",&x) ;
s[i][j] = x + s[i-][j]+s[i][j-]-s[i-][j-] ;
}
printf("%.3lf\n",sqrt(DFS(n,,,,)/n-(s[][]/n)*(s[][]/n)) );
return ;
}

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

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

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

  2. POJ 1191 棋盘分割(DP)

    题目链接 大体思路看,黑书...其他就是注意搞一个in数组,这样记忆化搜索,貌似比较快. #include <cstdio> #include <cstring> #inclu ...

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

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

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

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

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

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

  6. POJ 1191 棋盘分割

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

  7. POJ 1191棋盘分割问题

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

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

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

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

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

随机推荐

  1. 淘宝店铺应用android源码

    一个淘宝店铺的app 界面模仿蘑菇街 完结版很多朋友想知道web端 我发上来 是用thinkphp框架 懂的同学拿去研究 ,之前做的前台 现在基本上不能用 就看个后台就好了 也比较简单 我放上来 大家 ...

  2. 【风马一族_git_github】gitGui与github的SSH

    权限校验 首先,您的数据保存在远端服务器一份,服务器需要对您的身份识别.一段RSA加密字符串. 启动GUI,菜单-帮助,[Step1-创建密钥]Generate SSH KEY 步骤一: 步骤二: 步 ...

  3. Css background缩写

    例子: background:url(../images20130624/bg.png) no-repeat -1424px -5px; 官方API Value: ['background-color ...

  4. javascript对象与实例

    var person=new Object(); var person2={}; 一切都是对象 person是Object的实例, 也是对象. 第二个person2也是如此,只不过它是采用字面量的方式 ...

  5. Mysql多表查询(两张独立表,一张关系表)

    一.数据库设计 1.三个数据表长这样   其中user表记录用户信息,cat主要记录男女性别,mete表是用户id和性别id的对应关系   2.具体数据如下   二.查询目标 查询出所有性别为“男”的 ...

  6. 在HTML中通过jQuery设置列表项符号

    在创建列表的时候,可以通过指定type来设置列表项的符号,如下所示: <body> <form id="form1" runat="server&quo ...

  7. 使用virtualenv或zc.buildout创建Python-tornado分离环境

    originally created by shuliang under CC BY-NC-ND 3.0 license 一.引言 学习编程,好比练功,总得先有个环境,搭台子是必须的.为了照顾初学者, ...

  8. intellij idea 代码正常,但是编译出现 java:需要";"

    1. 查看idea 的maven 插件是不是版本太低,发现应用里是用的jdk是1.7 maven插件是2.2.1 2. 查看应用编码,比如部分文件是GBK,里面有中文,而整个应用的编码是Utf-8

  9. 微软更换考试中心后报名攻略以及MCT半价

    微软从Prometric更换为Pearson的考试中心,比起以前的预约流程更加便捷. Pearson VUE为微软公司提供MCP考试服务 Pearson VUE为微软公司提供MCP考试服务 http: ...

  10. Nginx模块开发1_明白自定义模块的编译流程

    自定义模块的编译流程 --add-module参数 configure使用--add-module参数指定添加模块目录. config脚本 由--add-module指定的目录保存为$ngx-addo ...