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

题面

BZOJ
洛谷

题解

一个很简单的\(dp\),写成记忆化搜索的形式的挺不错的。

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
inline int read()
{int x=0;bool t=false;char ch=getchar();while((ch<'0'||ch>'9')&&ch!='-')ch=getchar();if(ch=='-')t=true,ch=getchar();while(ch<='9'&&ch>='0')x=x*10+ch-48,ch=getchar();return t?-x:x;
}
double sqr(double x){return x*x;}
int A,B,n;
int g[11][11];
double f[11][11][11][11][11],avg;
double dfs(int x1,int y1,int x2,int y2,int n)
{if(n>(x2-x1+1)*(y2-y1+1))return 1e9;if(f[x1][y1][x2][y2][n]<1e9)return f[x1][y1][x2][y2][n];double ret=1e9;for(int a=1;a<n;++a){for(int i=x1;i<x2;++i)ret=min(ret,dfs(x1,y1,i,y2,a)+dfs(i+1,y1,x2,y2,n-a));for(int i=y1;i<y2;++i)ret=min(ret,dfs(x1,y1,x2,i,a)+dfs(x1,i+1,x2,y2,n-a));}return f[x1][y1][x2][y2][n]=ret;
}
int main()
{A=read();B=read();n=read();for(int i=1;i<=A;++i)for(int j=1;j<=B;++j)avg+=(g[i][j]=read());for(int i=1;i<=A;++i)for(int j=1;j<=B;++j)g[i][j]+=g[i-1][j]+g[i][j-1]-g[i-1][j-1];avg/=n;memset(f,127,sizeof(f));for(int i=1;i<=A;++i)for(int j=1;j<=B;++j)for(int k=i;k<=A;++k)for(int l=j;l<=B;++l)f[i][j][k][l][1]=sqr(g[k][l]-g[i-1][l]-g[k][j-1]+g[i-1][j-1]-avg);printf("%.2lf\n",sqrt(dfs(1,1,A,B,n)/n));return 0;
}

转载于:https://www.cnblogs.com/cjyyb/p/9451575.html

【BZOJ1048】分割矩阵(记忆化搜索,动态规划)相关推荐

  1. NYOJ 87-棋盘分割(记忆化搜索)

    棋盘分割 时间限制:1000 ms  |  内存限制:65535 KB 难度:6 描述 将一个8*8的棋盘进行如下分割:将原棋盘割下一块矩形棋盘并使剩下部分也是矩形,再将剩下的部分继续如此分割,这样割 ...

  2. pku 1191 棋盘分割 DP / 记忆化搜索

    http://poj.org/problem?id=1191 题意:中文省略. 思路:黑说p116有讲解, 主要的状态转移方程为 横着切: dp[k][x1][y1][x2][y2]  = min(d ...

  3. [蓝桥杯]算法提高 第二点五个不高兴的小明(记忆化搜索||动态规划)

    问题描述 有一条长为n的走廊,小明站在走廊的一端,每次可以跳过不超过p格,每格都有一个权值wi. 小明要从一端跳到另一端,不能回跳,正好跳t次,请问他跳过的方格的权值和最大是多少? 输入格式 输入的第 ...

  4. [Leetcode][第322题][JAVA][零钱兑换][回溯][记忆化搜索][动态规划]

    [问题描述][中等] [解答思路] 1. 递归(超时) class Solution {int res = Integer.MAX_VALUE;public int coinChange(int[] ...

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

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

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

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

  7. ZOJ - 2972 Hurdles of 110m(记忆化搜索/动态规划)

    题目链接:点击查看 题目大意:给定n个点,以及m的最大体力值,共有三个状态通过每个点 快速模式:消耗时间t1,消耗体力f1 匀速模式:消耗时间t2 慢速模式:消耗时间t3,恢复体力f2 问:通过n个点 ...

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

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

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

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

最新文章

  1. html 显示消息数量,html实现消息按钮上的数量角标的实例详解
  2. Mysql进阶(2)——组复制
  3. Nginx http和反向代理配置实例介绍
  4. 成功解决pywintypes.com_error: (-2147221005, '无效的类字符串', None, None)
  5. UI上search 的drop down list是怎么实现的
  6. 项目如何从 SVN 迁移到 Git
  7. 一条SQL语句的执行过程
  8. 使用 WebSphere Portlet Factory 构建基于 Web2.0 的灵活 SOA 前端
  9. UVA10849 Move the bishop【国际象棋】
  10. 在Java中将字符串转换为日期,将日期转换为字符串
  11. 读书笔记 计算机系统--系统架构与操作系统的高度集成 第二章处理器体系结构...
  12. Java—网络编程相关概念
  13. oracle中asm是什么,什么是ASM?
  14. Flash CS3:FLV视频短片我来做!
  15. “离职同事在工作群抢红包被踢”:学会退群,是职场人的基本修养
  16. 计算机电脑故障,电脑常见故障解决方法
  17. cydia添加源程序 v1.1.6 中文版
  18. 关于泛型中包含级联的List转化为json数据的处理
  19. 题目1035:找出直系亲属 树
  20. 关于android的Haxm报错调试问题

热门文章

  1. C++ 高级数据类型(二)—— 字符序列
  2. Linux Wireless架构总结
  3. Go-json 实例
  4. jq localStorage
  5. [react] React的isMounted有什么作用?
  6. 前端学习(3328):闭包的形式4
  7. [vue] 说说你对SPA单页面的理解,它的优缺点分别是什么?
  8. [css] position的relative和absolute定位原点是哪里?
  9. [css] css怎么更改表单的单选框或下拉框的默认样式?
  10. [css] 分析比较opacity: 0、visibility: hidden、display: none三者的优劣和适用场景