题目链接:

黑书 P116

HDU 2157 棋盘分割

POJ 1191 棋盘分割

分析:  枚举所有可能的切割方法. 但如果用递归的方法要加上记忆搜索, 不能会超时...

代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
const int inf=6400*6400;
const int N=8;
int sum[10][10]; ///矩形(1,1)左上 - (i,j)右下 的和
double s[10][10][10][10]; /// 矩形和的平方
double dp[10][10][10][10][16];
double DFS(int x1,int y1,int x2,int y2,int k){
if(k==1) return s[x1][y1][x2][y2];
if(dp[x1][y1][x2][y2][k]!=-1) return dp[x1][y1][x2][y2][k];
double ret=(double)inf;
/// 行切割 分成两子块 (x1,y1)-(i,y2) \ (i+1,y1)-(x2,y2)
for(int a=x1; a<x2; a++) {
ret=min(ret,DFS(x1,y1,a,y2,k-1)+s[a+1][y1][x2][y2]);
ret=min(ret,DFS(a+1,y1,x2,y2,k-1)+s[x1][y1][a][y2]);
}
/// 列切割 分成两子块 (x1,y1)-(x2,i) \ (x1,i+1)-(x2,y2)
for(int b=y1; b<y2; b++) { //竖直方向切割
ret=min(ret,DFS(x1,y1,x2,b,k-1)+s[x1][b+1][x2][y2]);
ret=min(ret,DFS(x1,b+1,x2,y2,k-1)+s[x1][y1][x2][b]);
}
dp[x1][y1][x2][y2][k]=ret;
return ret;
}
int main(){
int n;
while(~scanf("%d",&n)&&n){
for(int i=0;i<=N;++i) sum[i][0]=sum[0][i]=0;
for(int i=1;i<=N;++i)
for(int j=1;j<=N;++j){
int a; scanf("%d",&a);
sum[i][j]=sum[i][j-1]+sum[i-1][j]-sum[i-1][j-1]+a;
}
double avr=double(sum[N][N])/n;
for(int i=1;i<=N;++i) ///矩形(i,k)-(j,t)和的 平方
for(int k=1;k<=N;++k)
for(int j=i;j<=N;++j)
for(int t=k;t<=N;++t){
double u=(double)(sum[j][t]-sum[j][k-1]-sum[i-1][t]+sum[i-1][k-1]);
s[i][k][j][t]=u*u;
for(int p=0;p<=16;++p)dp[i][k][j][t][p]=-1;
}
double ans=DFS(1,1,N,N,n);
printf("%.3lf\n",sqrt(ans/n-avr*avr));
}
return 0;
}

HDU 2517 / POJ 1191 棋盘分割 区间DP / 记忆化搜索的更多相关文章

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

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

  2. poj 1088 滑雪(区间dp+记忆化搜索)

    题目链接:http://poj.org/problem?id=1088 思路分析: 1>状态定义:状态dp[i][j]表示在位置map[i][j]可以滑雪的最长区域长度: 2>状态转移方程 ...

  3. (区间dp + 记忆化搜索)Treats for the Cows (POJ 3186)

    http://poj.org/problem?id=3186   Description FJ has purchased N (1 <= N <= 2000) yummy treats ...

  4. UVA 10003 Cutting Sticks 区间DP+记忆化搜索

    UVA 10003 Cutting Sticks+区间DP 纵有疾风起 题目大意 有一个长为L的木棍,木棍中间有n个切点.每次切割的费用为当前木棍的长度.求切割木棍的最小费用 输入输出 第一行是木棍的 ...

  5. uva 10891 区间dp+记忆化搜索

    https://vjudge.net/problem/UVA-10891 给定一个序列x,A和B依次取数,规则是每次只能从头或者尾部取走若干个数,A和B采取的策略使得自己取出的数尽量和最大,A是先手, ...

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

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

  7. POJ 1191 棋盘分割(DP)

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

  8. hdu 4597 Play Game(区间dp,记忆化搜索)

    Problem Description Alice and Bob are playing a game. There are two piles of cards. There are N card ...

  9. loj 1031(区间dp+记忆化搜索)

    题目链接:http://lightoj.com/volume_showproblem.php?problem=1031 思路:dp[i][j]表示从区间i-j中能取得的最大值,然后就是枚举分割点了. ...

随机推荐

  1. 【转】Linux驱动模块编译进内核中

    原文网址:http://blog.chinaunix.net/uid-29287950-id-4573481.html BQ27501驱动编译进内核 一.       驱动程序编译进内核的步骤 在 l ...

  2. UESTC_Palindromic String 2015 UESTC Training for Search Algorithm & String<Problem M>

    M - Palindromic String Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 128000/128000KB (Java ...

  3. Windows多线程同步系列之一-----互斥对象

    多线程同步之互斥对象 作者:vpoet mail:vpoet_sir@163.com   对卖票问题进行线程间同步,本文将在上文的基础上,使用互斥对象对线程进行同步. 首先看看windows API ...

  4. php使用PDO方法详解

    PDO::exec:返回的是int类型,表示影响结果的条数. 复制代码 代码如下: PDOStatement::execute 返回的是boolean型,true表示执行成功,false表示执行失败, ...

  5. Struts2(四)——页面相关内容

    上篇博客总结了数据流转各个方面的内容,这篇重点说一下框架对于界面上知识. 一,说到页面,记得在总体介绍中,说到Struts2比Struts1的一方面优势就是它支持更多的视图技术(Freemarker, ...

  6. vector的内存分配与释放

    1. vector内存分配 <Effective STL>中"条款14":使用reserve来避免不必要的重新分配 关于STL容器,最神奇的事情之一是只要不超过它们的最 ...

  7. spring MVC做form提交Neither BindingResult nor plain target object for bean name 'command' available

    这两天在做spring3.0 MVC+hibernate3.2的练习中,做简单的form提交, 一直报java.lang.IllegalStateException: Neither BindingR ...

  8. ASP.NET实现图片防盗链(转)

    使用httpHandle来实现,对图片文件的请求做专门的处理第一步:创建一个类,继承自IHttpHandler,代码如下 C# code using System; using System.Web; ...

  9. php中的短标签 太坑人了

    今天配置了一个php页面去修改svn密码问题,结果调了半天,最后在Windows和 Linux的运行现象是不一样,运行结果更不一样了,关键是完全一模一样的代码. 最后发现是短标签引起的,Windows ...

  10. MyEclipse开发的java web项目在 Eclipse中无法识别

    不能识别项目解决办法 在eclipse下,右键项目properties   ->  project fac e ts 选中 Dynamic web module 选择后面的版本为 2.5(运行环 ...