【BZOJ1048】分割矩阵(记忆化搜索,动态规划)
【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】分割矩阵(记忆化搜索,动态规划)相关推荐
- NYOJ 87-棋盘分割(记忆化搜索)
棋盘分割 时间限制:1000 ms | 内存限制:65535 KB 难度:6 描述 将一个8*8的棋盘进行如下分割:将原棋盘割下一块矩形棋盘并使剩下部分也是矩形,再将剩下的部分继续如此分割,这样割 ...
- pku 1191 棋盘分割 DP / 记忆化搜索
http://poj.org/problem?id=1191 题意:中文省略. 思路:黑说p116有讲解, 主要的状态转移方程为 横着切: dp[k][x1][y1][x2][y2] = min(d ...
- [蓝桥杯]算法提高 第二点五个不高兴的小明(记忆化搜索||动态规划)
问题描述 有一条长为n的走廊,小明站在走廊的一端,每次可以跳过不超过p格,每格都有一个权值wi. 小明要从一端跳到另一端,不能回跳,正好跳t次,请问他跳过的方格的权值和最大是多少? 输入格式 输入的第 ...
- [Leetcode][第322题][JAVA][零钱兑换][回溯][记忆化搜索][动态规划]
[问题描述][中等] [解答思路] 1. 递归(超时) class Solution {int res = Integer.MAX_VALUE;public int coinChange(int[] ...
- 递归 dfs 记忆化搜索 动态规划
今天做洛谷P1434 [SHOI2002]滑雪 的时候仔细想了想记忆化搜索 现在总结一下 为了描述问题的某一状态,必须用到该状态的上一状态,而描述上一状态,又必须用到上一状态的上一状态--这种用自已来 ...
- DFS——记忆化搜索——动态规划
以洛谷P1802 5倍经验日 为例 https://www.luogu.org/problem/show?pid=1802 题目背景 现在乐斗有活动了!每打一个人可以获得5倍经验!absi2011却 ...
- ZOJ - 2972 Hurdles of 110m(记忆化搜索/动态规划)
题目链接:点击查看 题目大意:给定n个点,以及m的最大体力值,共有三个状态通过每个点 快速模式:消耗时间t1,消耗体力f1 匀速模式:消耗时间t2 慢速模式:消耗时间t3,恢复体力f2 问:通过n个点 ...
- [BZOJ 1048] [HAOI2007] 分割矩阵 【记忆化搜索】
题目链接:BZOJ - 1048 题目分析 感觉这种分割矩阵之类的题目很多都是这样子的. 方差中用到的平均数是可以直接算出来的,然后记忆化搜索 Solve(x, xx, y, yy, k) 表示横坐标 ...
- bzoj 1048: [HAOI2007]分割矩阵(记忆化搜索)
1048: [HAOI2007]分割矩阵 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 1133 Solved: 822 [Submit][Sta ...
最新文章
- html 显示消息数量,html实现消息按钮上的数量角标的实例详解
- Mysql进阶(2)——组复制
- Nginx http和反向代理配置实例介绍
- 成功解决pywintypes.com_error: (-2147221005, '无效的类字符串', None, None)
- UI上search 的drop down list是怎么实现的
- 项目如何从 SVN 迁移到 Git
- 一条SQL语句的执行过程
- 使用 WebSphere Portlet Factory 构建基于 Web2.0 的灵活 SOA 前端
- UVA10849 Move the bishop【国际象棋】
- 在Java中将字符串转换为日期,将日期转换为字符串
- 读书笔记 计算机系统--系统架构与操作系统的高度集成 第二章处理器体系结构...
- Java—网络编程相关概念
- oracle中asm是什么,什么是ASM?
- Flash CS3:FLV视频短片我来做!
- “离职同事在工作群抢红包被踢”:学会退群,是职场人的基本修养
- 计算机电脑故障,电脑常见故障解决方法
- cydia添加源程序 v1.1.6 中文版
- 关于泛型中包含级联的List转化为json数据的处理
- 题目1035:找出直系亲属 树
- 关于android的Haxm报错调试问题
热门文章
- C++ 高级数据类型(二)—— 字符序列
- Linux Wireless架构总结
- Go-json 实例
- jq localStorage
- [react] React的isMounted有什么作用?
- 前端学习(3328):闭包的形式4
- [vue] 说说你对SPA单页面的理解,它的优缺点分别是什么?
- [css] position的relative和absolute定位原点是哪里?
- [css] css怎么更改表单的单选框或下拉框的默认样式?
- [css] 分析比较opacity: 0、visibility: hidden、display: none三者的优劣和适用场景