题目链接:

黑书 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. css案例学习之table tr th td ul li实现日历

    效果 代码 <html> <head> <title>Calendar</title> <style> <!-- .month { b ...

  2. mongoDb c driver

    1,yum dependencies Centos,RHEL Fedora: $ sudo yum install git gcc automake autoconf libtool Debian: ...

  3. JAVA Grammar Corrector

    1. Integer.MAX_VALUE, Integer.MIN_VALUE 2. int[] res = {1,2} can only be used in the initialization, ...

  4. TI芯片android环境搭建和编译

    1>. Reading package lists... Done Building dependency tree        Reading state information... Do ...

  5. python2 和3的区别

    __future__ 模块 Python 3.x引入一些Python2不兼容的关键字和函数,可以通过在 Python2 内置的模块 __future__ 导入.建议如果你想在代码中支持 Python3 ...

  6. Quartz 开源的作业调度框架

    Quartz 是一个开源的作业调度框架,它完全由 Java 写成,并设计用于 J2SE 和 J2EE 应用中.它提供了巨大的灵活性而不牺牲简单性.你能够用它来为执行一个作业而创建简单的或复杂的调度.本 ...

  7. Android学习总结——SharedPreferences

    SharePreferences存储方式,只是轻量级数据存储,xml格式的数据显示方式.简单存储步骤如下:一:获取SharePreferences对象1.SharedPreferences pref ...

  8. 使用java连接hive,并执行hive语句详解

    安装hadoop 和 hive我就不多说了,网上太多文章 自己看去 首先,在机器上打开hiveservice hive --service hiveserver -p 50000 & 打开50 ...

  9. Mock.js:前后端分离开发工具

    概述 Mock.js实现的功能 基于 数据模板 生成数据 基于 HTML模板 生成数据 拦截并模拟 Ajax请求 用法 浏览器: <!-- (必选)加载 Mock --> <scri ...

  10. tomcat https jks 沃通免费证书安装 解决方案

    网上百度了一天什么没百度到,最后谷歌到了一篇文章启发之下解决之. 代理谷歌网站推荐一个,可以直接上谷歌: https://www.yundou.info ----------------------- ...