POJ 1191 DP+DFS棋盘分割问题
题目大意:
Description

运用动态规划,状态为int d(int k, int x1, int y1, int x2, int y2),表示左上角为(x1, y1),右下角为(x2, y2)的矩阵被切割成n块时可以达到的最小平方和。
状态转移方程为
nowstate=min( nowstate, dfs(k-1, x1, y1, a ,y2)+s[a+1, y1, x2, y2])
nowstate=min( nowstate, dfs(k-1, a+1, y1, x2, y2)+s[x1, y1, a, y2])
nowstate=min( nowstate, dfs(k-1, x1, b+1, x2, y2)+s[x1, y1, x2, b])
nowstate=min( nowstate, dfs(k-1, x1, y1, x2, b)+s[x1, b+1, x2, y2])
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
#define INF 0x3f3f3f3f
int dp[][][][][],val[][],n; int sum(int x1,int y1,int x2,int y2)
{
int ans=val[x2][y2]-val[x1-][y2]-val[x2][y1-]+val[x1-][y1-];
return ans*ans;
} int dfs(int k,int x1,int y1,int x2,int y2)
{
if(dp[k][x1][y1][x2][y2]) return dp[k][x1][y1][x2][y2];
if(k==||x1==x2||y1==y2){
dp[k][x1][y1][x2][y2]= sum(x1,y1,x2,y2);
return dp[k][x1][y1][x2][y2];
}
int nowstate=INF;
for(int i=x1;i<x2;i++){
nowstate=min(nowstate,dfs(k-,i+,y1,x2,y2)+sum(x1,y1,i,y2));
nowstate=min(nowstate,dfs(k-,x1,y1,i,y2)+sum(i+,y1,x2,y2));
}
for(int i=y1;i<y2;i++){
nowstate=min(nowstate,dfs(k-,x1,i+,x2,y2)+sum(x1,y1,x2,i));
nowstate=min(nowstate,dfs(k-,x1,y1,x2,i)+sum(x1,i+,x2,y2));
}
dp[k][x1][y1][x2][y2]=nowstate;
return nowstate;
} void change()
{
for(int i=;i<=;i++)
val[i][]=,val[][i]=; for(int i=;i<=;i++)
for(int j=;j<=;j++)
val[i][j]+=val[i-][j]+val[i][j-]-val[i-][j-];
} int main()
{
while(~scanf("%d",&n)){ memset(dp,,sizeof(dp)); for(int i=;i<=;i++)
for(int j=;j<=;j++)
scanf("%d",&val[i][j]); change(); double res;
double ave=1.0*val[][]/n;
res=sqrt((double)dfs(n,,,,)/n-ave*ave);
printf("%.3f\n", res);
}
return ;
}
POJ 1191 DP+DFS棋盘分割问题的更多相关文章
- [POJ] 1191 [LUOGU] P1436 棋盘分割
那个均方差,可以通过展开.合并Σ,发现最终只有Xi^2会对答案造成影响,其他都是定值,所以求出最小的和的平方就行. 其实这才是这题最难的部分,以下都是码农部分. f[x1][y1][x2][y2][k ...
- poj 1321 (简单DFS) 棋盘问题
题目:http://poj.org/problem?id=1321 最近状态有点down, 练练手 #include<cstdio> using namespace std; ][]; ] ...
- HDU 2517 / POJ 1191 棋盘分割 区间DP / 记忆化搜索
题目链接: 黑书 P116 HDU 2157 棋盘分割 POJ 1191 棋盘分割 分析: 枚举所有可能的切割方法. 但如果用递归的方法要加上记忆搜索, 不能会超时... 代码: #include& ...
- POJ 1191 棋盘分割 【DFS记忆化搜索经典】
题目传送门:http://poj.org/problem?id=1191 棋盘分割 Time Limit: 1000MS Memory Limit: 10000K Total Submission ...
- poj 1191 棋盘分割 动态规划
棋盘分割 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 11457 Accepted: 4032 Description ...
- POJ 1191 棋盘分割
棋盘分割 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 11213 Accepted: 3951 Description 将一个 ...
- POJ 1191棋盘分割问题
棋盘分割问题 题目大意,将一个棋盘分割成k-1个矩形,每个矩形都对应一个权值,让所有的权值最小求分法 很像区间DP,但是也不能说就是 我们只要想好了一个怎么变成两个,剩下的就好了,但是怎么变,就是变化 ...
- [NOI1999] 棋盘分割(推式子+dp)
http://poj.org/problem?id=1191 棋盘分割 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 156 ...
- poj1191 棋盘分割【区间DP】【记忆化搜索】
棋盘分割 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 16263 Accepted: 5812 Description ...
随机推荐
- 题解报告:poj 2752 Seek the Name, Seek the Fame(kmp前缀表prefix_table的运用)
Description The little cat is so famous, that many couples tramp over hill and dale to Byteland, and ...
- 实现php间隔一段时间执行一次某段代码
<?php ignore_user_abort(); //即使Client断开(如关掉浏览器),PHP脚本也可以继续执行. set_time_limit(0); // 执行时间为无限制,php ...
- 里氏替换原则中is和as分别的作用
is 是用于检查对象是否指定类型兼容 if(empls[i] is SE){ ((SE)empls).SayHi(); } as 不用强转可以直接转换 if(empls[i] is SE){ SE s ...
- negroni-gzip源码简单分析解读
negroni-gzip源码简单分析解读 这是一个为Negroni设计的gzip压缩处理中间件,需要用到已有的compress中的gzip,阅读了不长的源码之后,总结了一些关键要点和注意点. 检查是否 ...
- orcale 数据库的一些知识
最近学了一些Oracle数据库的知识,我想自己整理一下,以后也方便自己查阅的. orcale 数据库登录(tiger) 1. sql plus 登录 用户名: sys 口令: 主机字符串:orcl a ...
- 移动端展示pdf(在线打开pdf)
需求:在手机微信浏览器或者其他浏览器中打开pdf 准备:前端插件:查找pdf.js 官网地址:http://mozilla.github.io/pdf.js/ 在官网中下载demo 注释:pdf的d ...
- 掌握Spark机器学习库-01
第1章 初识机器学习 在本章中将带领大家概要了解什么是机器学习.机器学习在当前有哪些典型应用.机器学习的核心思想.常用的框架有哪些,该如何进行选型等相关问题. 1-1 导学 1-2 机器学习概述 1- ...
- 关于mapState和mapMutations和mapGetters 和mapActions辅助函数的用法及作用(一)-----mapState
一.通过mapState函数的对象参数来赋值: <p>{{ count }}</p> <p>{{ count1 }}</p> <p>{{ c ...
- 设计模式之一:strategy pattern
定义算法族,彼此之间可以替换.变化的方法抽出封装,不变的父类定义继承.多用组合少用继承. 代码示例先不贴了.
- IOS 面试题系列
随着iOS平台开发的职位的增加,笔试.面试也越来越有“套路”,这里我总结了一些面试题,多数是Objective-C的基础知识,适合于面试新人,答案是我自己答的,不准确的地方,欢迎指出. 1. Ob ...