正题

题目链接:https://www.luogu.org/problem/P2217


题目大意

a∗ba*ba∗b的矩阵,分成nnn个矩阵,求每个矩阵均方差最小,求答案。


解题思路

切n−1n-1n−1刀
设fk,x1,y1,x2,y2f_{k,x1,y1,x2,y2}fk,x1,y1,x2,y2​表示矩阵(x1,y1,x2,y2)(x1,y1,x2,y2)(x1,y1,x2,y2)还剩下kkk刀时的最小均方差,dfsdfsdfs转移即可。


codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
int a,b,n;
double x[12][12],f[12][12][12][12][12],ave;
bool v[12][12][12][12][12];
double dfs(int dep,int x1,int y1,int x2,int y2)
{if(v[dep][x1][y1][x2][y2])return f[dep][x1][y1][x2][y2];if(!dep){double ans=0;for(int i=x1;i<=x2;i++)for(int j=y1;j<=y2;j++)ans+=x[i][j];v[dep][x1][y1][x2][y2]=1;return (f[dep][x1][y1][x2][y2]=((ans-ave)*(ans-ave)));}double mins=1e9;for(int i=0;i<dep;i++){for(int j=x1;j<x2;j++)mins=min(mins,dfs(i,x1,y1,j,y2)+dfs(dep-i-1,j+1,y1,x2,y2));for(int j=y1;j<y2;j++)mins=min(mins,dfs(i,x1,y1,x2,j)+dfs(dep-i-1,x1,j+1,x2,y2));}v[dep][x1][y1][x2][y2]=1;f[dep][x1][y1][x2][y2]=mins;if(mins==0) printf("%d %d %d %d %d\n",dep,x1,y1,x2,y2);return mins;
}
int main()
{scanf("%d%d%d",&a,&b,&n);for(int i=1;i<=a;i++)for(int j=1;j<=b;j++)scanf("%lf",&x[i][j]),ave+=x[i][j];ave/=(double)n;dfs(n-1,1,1,a,b);printf("%.2lf",sqrt(f[n-1][1][1][a][b]/(double)n));
}

P2217-[HAOI2007]分割矩阵【dfs,记忆化搜索】相关推荐

  1. bzoj 1048: [HAOI2007]分割矩阵(记忆化搜索)

    1048: [HAOI2007]分割矩阵 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 1133  Solved: 822 [Submit][Sta ...

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

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

  3. 【BZOJ1048】分割矩阵(记忆化搜索,动态规划)

    [BZOJ1048]分割矩阵(记忆化搜索,动态规划) 题面 BZOJ 洛谷 题解 一个很简单的\(dp\),写成记忆化搜索的形式的挺不错的. #include<iostream> #inc ...

  4. dfs记忆化搜索(带限制的选择问题) 讲解:LeetCode打家劫舍||| / 蓝桥 地宫取宝/蓝桥 k进制数//剪格子//方格分割

    记忆化递归的必要性: 普通的递归可能会重复求解某一值,类似斐波那契数列.同样的子问题可能会被求解多次,这样就会很慢很慢很慢 解决方法:我们把历史求解(子问题)记录下来,如果下次需要求解子问题,那么直接 ...

  5. UVA10285 Longest Run on a Snowboard【DFS+记忆化搜索】

    Michael likes snowboarding. That's not very surprising, since snowboarding is really great. The bad ...

  6. 蓝桥杯 地宫取宝【第五届】【省赛】【C组】C++ dfs 记忆化搜索

    资源限制 时间限制:1.0s   内存限制:256.0MB X 国王有一个地宫宝库.是 n x m 个格子的矩阵.每个格子放一件宝贝.每个宝贝贴着价值标签. 地宫的入口在左上角,出口在右下角. 小明被 ...

  7. DFS——记忆化搜索——动态规划

    以洛谷P1802  5倍经验日 为例 https://www.luogu.org/problem/show?pid=1802 题目背景 现在乐斗有活动了!每打一个人可以获得5倍经验!absi2011却 ...

  8. 8636 跳格子(dfs+记忆化搜索)

    8636 跳格子 该题有题解 时间限制:2457MS  内存限制:1000K 提交次数:139 通过次数:46 题型: 编程题   语言: G++;GCC Description 地上有一个n*m 的 ...

  9. 牛客假日团队赛5 F 随机数 BZOJ 1662: [Usaco2006 Nov]Round Numbers 圆环数 (dfs记忆化搜索的数位DP)...

    链接:https://ac.nowcoder.com/acm/contest/984/F 来源:牛客网 随机数 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言6 ...

  10. 递归 dfs 记忆化搜索 动态规划

    今天做洛谷P1434 [SHOI2002]滑雪 的时候仔细想了想记忆化搜索 现在总结一下 为了描述问题的某一状态,必须用到该状态的上一状态,而描述上一状态,又必须用到上一状态的上一状态--这种用自已来 ...

最新文章

  1. 导师喜不喜欢你?看以下几点就知道!
  2. java技术的核心是哪个_[JAVA]《Java 核心技术》(一)
  3. 科研实习 | 北京大学计算机学院杨智老师组招收系统方向科研实习生
  4. 【iCore4 双核心板_ARM】例程二十:LWIP_TCP_CLIENT实验——以太网数据传输
  5. 多样性算法在58部落的实践和思考
  6. HDU 1284 钱币兑换问题 (完全背包)
  7. linux搭建SonarQube_Oracle
  8. 够狠 | 单点登录三种方式,够狠!够劲爆!
  9. 前端多行文本溢出问题解决方案
  10. java反射获取包下所有的类
  11. cip协议服务器,控制及信息协议(CIP)
  12. 在Win7系统下, 使用VS2015 打开带有日文注释程序出现乱码的解决方案
  13. python wps api_WPS API操作
  14. 服务器硬盘检测工具有哪些,最常用的10大服务器管理工具
  15. udhcpc 参数使用说明
  16. 燕秀计算机打印区域文字高度,燕秀快捷键(全)
  17. 《缠中说禅》炒股经典理论
  18. 饥荒联机版修改在线模式
  19. NPM Error: Cannot find module ‘caniuse-lite/data/features/css-unicode-bidi.js‘
  20. 预测移动用户人口属性的Kaggle竞赛作品解析

热门文章

  1. c++ vector拷贝构造_JDK源码分析-Vector
  2. java dos编译命令是什么_在DOS命令行状态下,如果源程序HelloWorld.java在当前目录下,那么编译该程序的命令是()...
  3. 多个cpp文件生成so_boostpython:从多个.cpp文件创建一个模块(.so)
  4. linux应用与管理,Linux操作系统应用与管理
  5. xilinx7中管脚mrcc和srcc_Xilinx 7系列FPGA架构之SelectIO结构(一)
  6. 一个div 上下两行_Django 实战 | 搭一个 GitHub 用户展示网站 02
  7. leetcode24. 两两交换链表中的节点
  8. 7-51 两个有序链表序列的合并 (20 分)(vector做法)
  9. java并发练习之快乐影院
  10. [Spring5]IOC容器_Bean管理XML方式_p名称空间注入