poj 1191 矩形块的划分

时间:2021-12-24 00:06:48

思路:黑书的例题

#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 矩形块的划分的更多相关文章

  1. HDU 2517 &sol; POJ 1191 棋盘分割 区间DP &sol; 记忆化搜索

    题目链接: 黑书 P116 HDU 2157 棋盘分割 POJ 1191 棋盘分割 分析:  枚举所有可能的切割方法. 但如果用递归的方法要加上记忆搜索, 不能会超时... 代码: #include& ...

  2. POJ 1191 棋盘分割 【DFS记忆化搜索经典】

    题目传送门:http://poj.org/problem?id=1191 棋盘分割 Time Limit: 1000MS   Memory Limit: 10000K Total Submission ...

  3. &lbrack;USACO&rsqb; 铺放矩形块 题解

    题目大意: 给定4个矩形块,找出一个最小的封闭矩形将这4个矩形块放入,但不得相互重叠.所谓最小矩形指该矩形面积最小. 思路: 枚举矩形的安放顺序,再按照题目所给的图判断即可,主要要想到枚举. 代码: ...

  4. 【USACO 1&period;4&period;1】铺放矩形块

    [描述] 给定4个矩形块,找出一个最小的封闭矩形将这4个矩形块放入,但不得相互重叠.所谓最小矩形指该矩形面积最小.               所有4个矩形块的边都与封闭矩形的边相平行,图1示出了铺放 ...

  5. poj 1191 棋盘分割&lpar;dp &plus; 记忆化搜索&rpar;

    题目:http://poj.org/problem?id=1191 黑书116页的例题 将方差公式化简之后就是 每一块和的平方 相加/n , 减去平均值的平方. 可以看出来 方差只与 每一块的和的平方 ...

  6. OpenJudge&sol;Poj 1191 棋盘分割

    1.链接地址: http://bailian.openjudge.cn/practice/1191/ http://poj.org/problem?id=1191 2.题目: 总时间限制: 1000m ...

  7. poj - 1191 - 棋盘切割(dp&rpar;

    题意:将一个8*8的棋盘(每一个单元正方形有个分值)沿直线(竖或横)割掉一块,留下一块,对留下的这块继续这样操作,总共进行n - 1次,得到n块(1 < n < 15)矩形,每一个矩形的分 ...

  8. POJ 1191 棋盘分割

    棋盘分割 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 11213 Accepted: 3951 Description 将一个 ...

  9. poj 1191 棋盘分割 动态规划

    棋盘分割 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 11457   Accepted: 4032 Description ...

随机推荐

  1. Java实现数组排序

    package com.souvc.hibernate.exp; public class MySort { /** * 方法名:main</br> * 详述:Java实现数组排序 &lt ...

  2. ios显示艺术字字体颜色渐变

    UIColor * myColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"123.jpg"]]; self. ...

  3. Myeclipese改变背景色

    https://www.baidu.com/s?wd=Myeclipese%E6%94%B9%E5%8F%98%E8%83%8C%E6%99%AF%E8%89%B2&ie=utf-8& ...

  4. 聊天界面使用IQKeyboardManager导航栏及整个页面上移的解决方法

    问题: 使用第三方库IQKeyboardManager时会使整个页面上移,导航栏页偏移出了显示范围.在聊天界面就会使得上面的消息看不到. 解决方法: 首先说明:在聊天界面使用IQKeyboardMan ...

  5. 安装Office2016遇到&OpenCurlyDoubleQuote;无法流式传输Office”问题

    安装Office2016遇到“无法流式传输Office”问题,请问如何解决 很抱歉,找不到所需的文件,请检查安装源是否可访问,然后再试. 错误代码:30068-39(2) ============== ...

  6. 6行代码实现纯js导出excel

    // excel导出当前列表 function memberExport() { var oHtml = $('#list').html(); var excelHtml = '<html&gt ...

  7. Java之数组遍历

    package basic; //数组遍历方法 public class ForEach { public static void main(String[] args) { // 原始数组 Stri ...

  8. django和flask的区别

    转载至https://blog.csdn.net/tulan_xiaoxin/article/details/79132214 (1)Flask Flask确实很“轻”,不愧是Micro Framew ...

  9. 如何解决SPD的缓存问题

      SPD有时候文件被缓存住了,表现为文件的最后更改时间不对,或者本来文件已经被check in了,但是显示check out状态,而此时如果选择check in, 就会提示文件没有被check ou ...

  10. mybatis实现多表联合查询

    本文转自:http://www.cnblogs.com/xdp-gacl/p/4264440.html#!comments 一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) ...