poj 1191 矩形块的划分
思路:黑书的例题
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<cstdio>
#define Maxn 20
#define mul(a) ((a)*(a))
using namespace std;
int dp[][][][][];
int s[][],val[][];
int S(int x1,int y1,int x2,int y2)
{
return mul(s[x2][y2]-s[x2][y1-]-s[x1-][y2]+s[x1-][y1-]);
}
int main()
{
int n,m,i,j;
double avg;
while(scanf("%d",&n)!=EOF)
{
memset(dp,,sizeof(dp));
memset(s,,sizeof(s));
for(i=;i<=;i++)
for(j=;j<=;j++){
scanf("%d",&val[i][j]);
s[i][j]=s[i-][j]+s[i][j-]-s[i-][j-]+val[i][j];
}
int x1,y1,x2,y2;
for(x1=;x1<=;x1++)
for(y1=;y1<=;y1++)
for(x2=x1;x2<=;x2++)
for(y2=y1;y2<=;y2++){
dp[][x1][y1][x2][y2]=S(x1,y1,x2,y2);
}
int a,b;
for(i=;i<=n-;i++)
for(x1=;x1>=;x1--)
for(y1=;y1>=;y1--)
for(x2=x1;x2<=;x2++)
for(y2=y1;y2<=;y2++){
int temp;
for(a=x1;a<x2;a++){
temp=min(dp[i-][x1][y1][a][y2]+S(a+,y1,x2,y2),dp[i-][a+][y1][x2][y2]+S(x1,y1,a,y2));
dp[i][x1][y1][x2][y2]=min(temp,dp[i][x1][y1][x2][y2]);
}
for(b=y1;b<y2;b++){
temp=min(dp[i-][x1][y1][x2][b]+S(x1,b+,x2,y2),dp[i-][x1][b+][x2][y2]+S(x1,y1,x2,b));
dp[i][x1][y1][x2][y2]=min(dp[i][x1][y1][x2][y2],temp);
}
}
double ans;
avg=s[][]*1.0/(n*1.0);
ans=(double)dp[n-][][][][];
ans=ans/(n*1.0);
ans-=avg*avg;
printf("%.3lf\n",sqrt(ans));
}
return ;
}
poj 1191 矩形块的划分的更多相关文章
- 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 ...
- [USACO] 铺放矩形块 题解
题目大意: 给定4个矩形块,找出一个最小的封闭矩形将这4个矩形块放入,但不得相互重叠.所谓最小矩形指该矩形面积最小. 思路: 枚举矩形的安放顺序,再按照题目所给的图判断即可,主要要想到枚举. 代码: ...
- 【USACO 1.4.1】铺放矩形块
[描述] 给定4个矩形块,找出一个最小的封闭矩形将这4个矩形块放入,但不得相互重叠.所谓最小矩形指该矩形面积最小. 所有4个矩形块的边都与封闭矩形的边相平行,图1示出了铺放 ...
- poj 1191 棋盘分割(dp + 记忆化搜索)
题目:http://poj.org/problem?id=1191 黑书116页的例题 将方差公式化简之后就是 每一块和的平方 相加/n , 减去平均值的平方. 可以看出来 方差只与 每一块的和的平方 ...
- OpenJudge/Poj 1191 棋盘分割
1.链接地址: http://bailian.openjudge.cn/practice/1191/ http://poj.org/problem?id=1191 2.题目: 总时间限制: 1000m ...
- poj - 1191 - 棋盘切割(dp)
题意:将一个8*8的棋盘(每一个单元正方形有个分值)沿直线(竖或横)割掉一块,留下一块,对留下的这块继续这样操作,总共进行n - 1次,得到n块(1 < n < 15)矩形,每一个矩形的分 ...
- POJ 1191 棋盘分割
棋盘分割 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 11213 Accepted: 3951 Description 将一个 ...
- poj 1191 棋盘分割 动态规划
棋盘分割 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 11457 Accepted: 4032 Description ...
随机推荐
- Castle 开发系列文章
转自:http://terrylee.cnblogs.com/archive/2006/04/28/castl_ioc_article.html Castle是针对.NET平台的一个开源项目,从数据访 ...
- [转]vector iterator not incrementable 的问题
转自:http://blog.csdn.net/kuaile123/article/details/11105115 vector::erase误使用问题: 暂时使用经验: 不能在循环中使用,否则会报 ...
- Jdk和Jre目录和三个lib目录说明----外部扩展jar包servlet,mysql,oracle等
以下文章转载自a personal blog:For Future,因为昨天下午在cmd模式下编译servlet失败,后来在网上找到这篇文章帮我解决了该问题,我觉得挺值得收藏的,并且这篇文章对&quo ...
- 为DAG预留群集名称对象(CNO)
在某些环境中,计算机帐户的创建受到限制或计算机帐户是在非默认计算机容器中创建的,则会预留群集名称对象 (CNO),然后通过为其分配权限来设置 CNO.此外,使用运行 Windows Server 20 ...
- Codeforces Round #337 (Div. 2) D. Vika and Segments 线段树扫描线
D. Vika and Segments 题目连接: http://www.codeforces.com/contest/610/problem/D Description Vika has an i ...
- js正則表達式语法
1. 正則表達式规则 1.1 普通字符 字母.数字.汉字.下划线.以及后边章节中没有特殊定义的标点符号,都是"普通字符".表达式中的普通字符,在匹配一个字符串的时候,匹配与之同样的 ...
- iOS开发——UI篇Swift篇&UIImageView
UIImageView override func viewDidLoad() { super.viewDidLoad() titleLabel.text = titleString //通过坐标和大 ...
- 深入了解android平台的jni(二)
Android.mk是Android提供的一种makefile文件,用来指定诸如编译生成so库名.引用的头文件目录.需要编译的.c/.cpp文件和.a静态库文件等.要掌握jni,就必须熟练掌握Andr ...
- poj 2688 状态压缩dp解tsp
题意: 裸的tsp. 分析: 用bfs求出随意两点之间的距离后能够暴搜也能够用next_permutation水,但效率肯定不如状压dp.dp[s][u]表示从0出发訪问过s集合中的点.眼下在点u走过 ...
- 一款基于jQuery的支持鼠标拖拽滑动焦点图
记得之前我们分享过一款jQuery全屏广告图片焦点图,图片切换效果还不错.今天我们要分享另外一款jQuery焦点图插件,它的特点是支持鼠标拖拽滑动,所以在移动设备上使用更加方便,你只要用手指滑动屏幕即 ...