LRJ黑书上的例题。

化简均方差公式:

均值的平方一定,所以只需让矩形的总分的平方和最小即可。

定义:dp[k][x1][y1][x2][y2],以(x1,y1)为左上角坐标,(x2,y2)为右下角坐标的矩形,切割K次以后得到的k+1块举行的总分平方和的最小值

转移方程:(分成横割和竖割)

dp[k][x1][y1][x2][y2]=min{ dp[k-1][x1][y1][a][y2]+sum[a+1][y1][x2][y2], dp[k-1][a+1][y1][x2][y2]+sum[x1][y1][a][y2], (横着 x1≤a<x2)

dp[k-1][x1][y1][x2][b]+sum[x1][b+1][x2][y2], dp[k-1][x1][b+1][x2][y2]+sum[x1][y1][x2][b] (竖着 y1≤b<y2) }

代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#define Mod 1000000007
using namespace std;
#define N 2100 double dp[][][][][],sum[][][][],mp[][]; double SUM2(int i,int j,int a,int b)
{
if(sum[i][j][a][b] >= )
return sum[i][j][a][b];
double res = ;
int k,h;
for(k=i;k<=a;k++)
for(h=j;h<=b;h++)
res += mp[k][h];
sum[i][j][a][b] = res*res;
return sum[i][j][a][b];
} double solve(int k,int i,int j,int a,int b)
{
if(k == )
return SUM2(i,j,a,b);
if(dp[k][i][j][a][b] >= )
return dp[k][i][j][a][b];
double Min1 = Mod;
double Min2 = Mod;
for(int s=i;s<a;s++)
Min1 = min(Min1,min(solve(k-,i,j,s,b)+SUM2(s+,j,a,b),solve(k-,s+,j,a,b)+SUM2(i,j,s,b)));
for(int h=j;h<b;h++)
Min2 = min(Min2,min(solve(k-,i,j,a,h)+SUM2(i,h+,a,b),solve(k-,i,h+,a,b)+SUM2(i,j,a,h)));
dp[k][i][j][a][b] = min(Min1,Min2);
return dp[k][i][j][a][b];
} int main()
{
double SUM,AX;
int i,j,n;
SUM = ;
scanf("%d",&n);
for(i=;i<=;i++)
{
for(j=;j<=;j++)
{
scanf("%lf",&mp[i][j]);
SUM += mp[i][j];
}
}
AX = SUM/(double)n;
AX *= AX;
memset(sum,-,sizeof(sum));
memset(dp,-,sizeof(dp));
printf("%.3lf\n",sqrt(solve(n,,,,)/(double)n-AX));
return ;
}

UESTC 881 神秘绑架案 --二维DP的更多相关文章

  1. UESTC_神秘绑架案 CDOJ 881

    神秘绑架案 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit Sta ...

  2. 洛谷p1732 活蹦乱跳的香穗子 二维DP

    今天不BB了,直接帖原题吧  地址>>https://www.luogu.org/problem/show?pid=1732<< 题目描述 香穗子在田野上调蘑菇!她跳啊跳,发现 ...

  3. HDU - 2159 FATE(二维dp之01背包问题)

    题目: ​ 思路: 二维dp,完全背包,状态转移方程dp[i][z] = max(dp[i][z], dp[i-1][z-a[j]]+b[j]),dp[i][z]表示在杀i个怪,消耗z个容忍度的情况下 ...

  4. 传纸条 NOIP2008 洛谷1006 二维dp

    二维dp 扯淡 一道比较基本的入门难度的二维dp,类似于那道方格取数,不过走过一次的点下次不能再走(看提交记录里面好像走过一次的加一次a[i][j]的也AC了,,),我记得当年那道方格取数死活听不懂, ...

  5. 洛谷P1048 采药 二维dp化一维

    题目描述 辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师.为此,他想拜附近最有威望的医师为师.医师为了判断他的资质,给他出了一个难题.医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个 ...

  6. 关于二维DP————站上巨人的肩膀

    意匠惨淡经营中ing, 语不惊人死不休........ 前几天学了DP,做了个简单的整理,记录了关于DP的一些概念之类的,今天记录一下刚学的一个类型 ----关于二维DP 那建立二维数组主要是干嘛用的 ...

  7. BZOJ 2748: [HAOI2012]音量调节【二维dp,枚举】

    2748: [HAOI2012]音量调节 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 2010  Solved: 1260[Submit][Statu ...

  8. To the Max 二维dp(一维的变形)

    Description Given a two-dimensional array of positive and negative integers, a sub-rectangle is any ...

  9. POJ 1661 Help Jimmy(二维DP)

    题目链接:http://poj.org/problem?id=1661 题目大意: 如图包括多个长度和高度各不相同的平台.地面是最低的平台,高度为零,长度无限. Jimmy老鼠在时刻0从高于所有平台的 ...

随机推荐

  1. SwipeRefreshLayout下拉刷新

    1.SwipeRefreshLayout是Google在support v4 19.1版本的library更新的一个下拉刷新组件,实现刷新效果更方便. 弊端:只有下拉 //设置刷新控件圈圈的颜色 sw ...

  2. 【GOF23设计模式】适配器模式

    来源:http://www.bjsxt.com/ 一.[GOF23设计模式]_适配器模式.对象适配器.类适配器.开发中场景  适配器模式  笔记本电脑只有USB接口,新买的键盘是PS2接口的,需要用适 ...

  3. javascript函数中的三个技巧【一】

    在学习javascript中,函数是非常重要的,现在我来谈谈对函数的理解以及在工作和用法中的一些技巧 技巧一. [作用域安全的构造函数] 构造函数其实就是一个使用new操作调用的函数 function ...

  4. 项目、SVN clean的一些事

    1.如果你发现你的文件修改了.Tomcat也重新了,但访问的还是旧的文件,这个时候你需要clean下你的项目. Clean will discard all build problems and bu ...

  5. 关于C#中Environment.OSVersion判断操作系统及Win10上的问题

    我们都知道在C#中可以通过Environment.OSVersion来判断当前操作系统,下面是操作系统和主次版本的对应关系: 操作系统 主版本.次版本 Windows 10 10.0* Windows ...

  6. 深入底层逆向分析TDC‘s keygenme(手脱压缩壳)

    系统 : Windows xp 程序 : TDC‘s keygenme 程序下载地址 :http://pan.baidu.com/s/1gdWyt6z 要求 : 脱壳 & 注册机编写 使用工具 ...

  7. 在SharePoint中无代码开发InfoPath应用: 一个测试Web Service的工具

    这是这个系列的第一篇,介绍一个小工具,主要是用在Web Service测试的. 因为为了用一点高级的东西,就免不了和web service打交道. 你可以使用按照KB819267来修改web.conf ...

  8. Ubuntu 14.04下安装JDK8

    本文地址:http://www.cnblogs.com/archimedes/p/ubuntu-jdk8.html,转载请注明源地址. 欢迎关注我的个人博客:www.wuyudong.com, 更多云 ...

  9. MyBatis入门(一)---基本使用

    一.MyBatis简介 1.1.概述 MyBatis 是支持定制化 SQL.存储过程以及高级映射的优秀的持久层框架. MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集. M ...

  10. python初始化父类错误

    源码如下: #!/usr/bin/env python class Bird(): def __init__(self): self.hungry = True def eat(self): if s ...