水题盛宴啦啦啦……做起来真的极其舒服,比某些毒瘤题好太多了……

  数据范围极小 --> 状压 / 搜索 / 高维度dp;观察要求的均方差,开始考虑是不是能够换一下式子。我们用\(a_{x}\)来表示第 \(x\) 个矩阵的总值,则式子为:

  \(ans = sqrt \frac{{\left ( \sum_{1}^{n} a_{x} - \bar{x} \right )^2}}{n}\)

  转化一下,化成:

  \(ans = sqrt \frac{{\left ( -n\bar{x}^2 + \sum_{1}^{n}a_{x}^2 \right )}}{n}\)

  然后问题就变成了:使划分出来的矩阵的平方和最小。直接上记忆化搜索,BINGO~

#include <bits/stdc++.h>
using namespace std;
#define maxn 11
#define INF 99999999
#define db double
int n, m, K, sum[maxn][maxn];
int f[maxn][maxn][maxn][maxn][maxn];
int tot;
db aver; int read()
{
int x = ;
char c;
c = getchar();
while(c < '' || c > '') c = getchar();
while(c >= '' && c <= '') x = x * + c - '', c = getchar();
return x;
} int dfs(int a, int b, int c, int d, int K)
{
int *F = f[a][b][c][d];
if(~F[K]) return F[K];
else F[K] = INF;
if(c * d - (a - ) * (b - ) < K) return F[K] = INF;
if(K == )
{
F[K] = sum[c][d] - sum[a - ][d] - sum[c][b - ] + sum[a - ][b - ];
return F[K] = F[K] * F[K];
}
for(int i = a; i < c; i ++)
for(int j = ; j < K; j ++)
{
int x1 = dfs(a, b, i, d, j);
int x2 = dfs(i + , b, c, d, K - j);
F[K] = min(F[K], x1 + x2);
}
for(int i = b; i < d; i ++)
for(int j = ; j < K; j ++)
{
int x1 = dfs(a, b, c, i, j);
int x2 = dfs(a, i + , c, d, K - j);
F[K] = min(F[K], x1 + x2);
}
return F[K];
} int main()
{
n = read(), m = read(), K = read();
memset(f, -, sizeof(f));
for(int i = ; i <= n; i ++)
for(int j = ; j <= m; j ++)
{
int x = read(); tot += x;
sum[i][j] = sum[i - ][j] + sum[i][j - ] - sum[i - ][j - ] + x;
}
db aver = (db) tot / K;
dfs(, , n, m, K);
printf("%.2f\n", sqrt(((db) f[][][n][m][K] - aver * aver * (db) (K)) / (db) K));
return ;
}

【题解】HAOI2007分割矩阵的更多相关文章

  1. BZOJ 1048 [HAOI2007]分割矩阵

    1048: [HAOI2007]分割矩阵 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 623  Solved: 449[Submit][Status ...

  2. 【BZOJ1048】 [HAOI2007]分割矩阵

    [BZOJ1048][HAOI2007]分割矩阵 题面 bzoj 洛谷 题解 \(dp[a][b][c][d][num]\)表示将矩形\((a,b,c,d)\)分成\(num\)个的最小方差,然后转移 ...

  3. bzoj千题计划186:bzoj1048: [HAOI2007]分割矩阵

    http://www.lydsy.com/JudgeOnline/problem.php?id=1048 #include<cmath> #include<cstdio> #i ...

  4. 洛谷P2217 [HAOI2007]分割矩阵

    P2217 [HAOI2007]分割矩阵 题目描述 将一个a*b的数字矩阵进行如下分割:将原矩阵沿某一条直线分割成两个矩阵,再将生成的两个矩阵继续如此分割(当然也可以只分割其中的一个),这样分割了(n ...

  5. [BZOJ 1048] [HAOI2007] 分割矩阵 【记忆化搜索】

    题目链接:BZOJ - 1048 题目分析 感觉这种分割矩阵之类的题目很多都是这样子的. 方差中用到的平均数是可以直接算出来的,然后记忆化搜索 Solve(x, xx, y, yy, k) 表示横坐标 ...

  6. 1048: [HAOI2007]分割矩阵 - BZOJ

    Description 将一个a*b的数字矩阵进行如下分割:将原矩阵沿某一条直线分割成两个矩阵,再将生成的两个矩阵继续如此分割(当然也可以只分割其中的一个),这样分割了(n-1)次后,原矩阵被分割成了 ...

  7. [HAOI2007]分割矩阵

    题目描述 将一个a*b的数字矩阵进行如下分割:将原矩阵沿某一条直线分割成两个矩阵,再将生成的两个矩阵继续如此分割(当然也可以只分割其中的一个),这样分割了(n-1)次后,原矩阵被分割成了n个矩阵.(每 ...

  8. BZOJ1048:[HAOI2007]分割矩阵(记忆化搜索DP)

    Description 将一个a*b的数字矩阵进行如下分割:将原矩阵沿某一条直线分割成两个矩阵,再将生成的两个矩阵继续如此分割(当然也可以只分割其中的一个), 这样分割了(n-1)次后,原矩阵被分割成 ...

  9. 【记忆化搜索】bzoj1048 [HAOI2007]分割矩阵

    标准差=√(Σ(xi-xba)2/n)=Σ(xi)2+xba*n-2*xba*sum.只需最小化每个分割出来的矩阵的平方和即可. #include<cstdio> #include< ...

随机推荐

  1. vue项目全局使用axios

    共有三种方法: 1.结合 vue-axios使用 首先在主入口文件main.js中引用 import axios from 'axios' import VueAxios from 'vue-axio ...

  2. mysql数据库和数据表的简单操作

    一.数据库的增删改查 1.新建数据库 CREATE DATABASE 数据库名 charset utf8; 数据库名规则:可以由字母.数字.下划线.@.#.$ 区分大小写, 不能使用关键字如 crea ...

  3. Mina 组件介绍之 IoBuffer

    在Java NIO 中,ByteBuffer通常作为通信中传递消息的载体.而在Mina中,采用了IoBuffer代替ByteBuffer.Mina给出了不用ByteBuffer的两个主要理由: 1.  ...

  4. MR执行流程

    1.Map任务处理 1.1 读取HDFS中的文件.每一行解析成一个<k,v>.每一个键值对调用一次map函数. <0,hello you>   <10,hello me& ...

  5. 牛客网暑期ACM多校训练营(第四场) F

    参考:http://www.cnblogs.com/Jadon97/p/9383027.html #include <iostream> #include <cstdio> # ...

  6. (转载)深入super,看Python如何解决钻石继承难题

    1.   Python的继承以及调用父类成员 python子类调用父类成员有2种方法,分别是普通方法和super方法 假设Base是基类 class Base(object): def __init_ ...

  7. SharePoint2013修复报错

         今天项目组的Sharepoint2013不小心被卸载了,本想着直接修复,谁知道在修复的时候一直报错,说找不到什么文件.报的就是类似于这样的错误: Product: ######### -- ...

  8. 网页设计简史看设计&代码“隔膜”

    本文来自网易云社区 作者:马宝 设计与代码之间隔膜所在?既然你诚心诚意地问了,我就大发慈悲地告诉你.为了防止地球被破坏,为了维护世界的和平,为了贯彻爱与真实的邪恶~,我是穿梭在前端与设计之间爱与美丽的 ...

  9. 【jQuery】 js 对象

    [jQuery] js 对象 一.  创建对象的三种方式 <script> var v1 = new Object(); v1.name = "name1"; v1.a ...

  10. Linux中java应用程序的部署,使其开机自动启动

    初步需求:将在Windows/MyEclipse中开发的java应用程序部署到Linux服务器上,使其运行 针对需求,可以参考下面这些文章,但是这些文章很多东西没有提及到,我自己尝试部署运行 在lin ...