[poj 1191] 棋盘分割   划分型DP

递归---案例(棋盘分割poj1191) 题目描述 将一个8*8的棋盘进行如下分割:将原棋盘割下一块矩形棋盘并使剩下部分也是矩形,再将剩下的部分继续如此分割,这样割了n-1次后,连同最后剩下的矩形棋盘共有n块矩形棋盘。(每次切割都只能沿着棋盘格子的边进行)  原棋盘上每一格有一个分值,一块矩形棋盘的总分为其所含各格分值之和。现在需要把棋盘按上述规则分割成n块矩形棋盘,并使各矩形棋盘总分的均方差最小。   均方差σ 阅读详情

棋盘分割
Time Limit: 1000MS Memory Limit: 10000K
Total Submissions: 13841 Accepted: 4924

Description
将一个8*8的棋盘进行如下分割:将原棋盘割下一块矩形棋盘并使剩下部分也是矩形,再将剩下的部分继续如此分割,这样割了(n-1)次后,连同最后剩下的矩形棋盘共有n块矩形棋盘。(每次切割都只能沿着棋盘格子的边进行)

原棋盘上每一格有一个分值,一块矩形棋盘的总分为其所含各格分值之和。现在需要把棋盘按上述规则分割成n块矩形棋盘,并使各矩形棋盘总分的均方差最小。
均方差,其中平均值,xi为第i块矩形棋盘的总分。
请编程对给出的棋盘及n,求出O’的最小值。

Input
第1行为一个整数n(1 < n < 15)。
第2行至第9行每行为8个小于100的非负整数,表示棋盘上相应格子的分值。每行相邻两数之间用一个空格分隔。

Output
仅一个数,为O’(四舍五入精确到小数点后三位)。

Sample Input

3
1 1 1 1 1 1 1 3
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 0
1 1 1 1 1 1 0 3

Sample Output

1.633

Source
Noi 99

题目链接:http://poj.org/problem?id=1191;

题意:
中文题大家应该看的懂吧。。。

思路:
由公式:均值为一定;
S2=1/n∑(Xi−X)2==1/n∑Xi2−X2;

划分性DP;
1.预处理:
第i块的分值;
2.dp[k][x1][y1][x2][y2]代表表示矩形划分k次的最小代价;
递归处理(枚举矩形内的横切与竖切);

代码:

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <math.h>
using namespace std;
int ma[9][9];
int n;
int sum[9][9][9][9];
int dp[16][9][9][9][9];
void init()
{
        for(int x=0;x<8;x++)
    for(int y=0;y<8;y++)
    for(int xx=x;xx<8;xx++)
    for(int yy=y;yy<8;yy++)
    {
        int ans=0;
        for(int i=x;i<=xx;i++)
        for(int j=y;j<=yy;j++)
        ans+=ma[i][j];
        sum[x][y][xx][yy]=ans*ans;
        //cout<<x<<"   "<<y<<"   "<<xx<<"   "<<yy<<"                        "<<sum[x][y][xx][yy]<<endl;
    }
}
int DP(int k,int x,int y,int xx,int yy)
{
    if(dp[k][x][y][xx][yy]>=0) return dp[k][x][y][xx][yy];
    if(k==n-1)return sum[x][y][xx][yy];
    int ans=0;
    dp[k][x][y][xx][yy]=1<<29;
    for(int i=x;i<xx;i++)
    {
        ans=min(DP(k+1,x,y,i,yy)+sum[i+1][y][xx][yy],DP(k+1,i+1,y,xx,yy)+sum[x][y][i][yy]);
        dp[k][x][y][xx][yy]=min(ans,dp[k][x][y][xx][yy]);
    }
    for(int i=y;i<=yy;i++)
    {
        ans=min(DP(k+1,x,y,xx,i)+sum[x][i+1][xx][yy],DP(k+1,x,i+1,xx,yy)+sum[x][y][xx][i]);
        dp[k][x][y][xx][yy]=min(ans,dp[k][x][y][xx][yy]);
    }
    //cout<<dp[k][x][y][xx][yy]<<endl;  
    return dp[k][x][y][xx][yy];
}
int main()
{
      double ans;
      scanf("%d",&n);
      int cnt=0;
      for(int i=0;i<8;i++)
      {
            for(int j=0;j<8;j++)
            {
                  scanf("%d",&ma[i][j]);
                  cnt+=ma[i][j];
            }
      }
      init();
      memset(dp,-1,sizeof(dp));

      DP(0,0,0,7,7);
      ans=sqrt(dp[0][0][0][7][7]*1.0/n-(cnt*1.0)/n*(cnt*1.0)/n);
//cout<<dp[0][0][0][7][7]*1.0/n<<"   "<<cnt*1.0/n*(cnt*1.0)/n<<endl;
    //cout<<ans<<endl;
      printf("%.3f\n",ans);
      return 0;
}
poj 1191 经典dp 源代码 这是一道很不错的题目,dp解决的经典例子,是学习dp,和练习的好题目。。。。 立即下载

相关推荐

经典DP问题过河卒代码

经典过河卒:A 点有一个过河卒,需要走到目标 B 点。卒行走规则:可以向下、或者向右。同时在棋盘上的任一点有一个对方的马(如上图的C点),该马所在的点和所有跳跃一步可达的点称为对方马的控制点。例如上图 C 点上的马可以控制 9 个点(图中的P1,P2 … P8 和 C)。卒不能通过对方马的控制点。

poj1191——棋盘分隔

题目大意:原棋盘上每一格有一个分值,一块矩形棋盘的总分为各格分值之和,用n-1次将棋盘切割成n块,使得各个棋盘总分的均方差O'最小输入:n           8*8的非负整数(表示棋盘上相应格子的分值)输出:O'(四舍五入到小数点后三位)分析:dfs+dp           首先化简一下方差公式:           ,也就是说将题目转化为求各个棋盘总分的平方和最小值。输入时预处理一下,在va...

tzyshiwolaogongya的博客 279

Fast DDS源代码走读

DDS, PDP, EPD, DataWriter, DataReader

weixin_43082062的博客 710

POJ 1191 动态规划 区间DP 深度解析

二维区间DP,本题用到了诸多技巧十分值得我们去研究,其中包含了很多问题的原型。如果方法得当,思路清晰,20min内就可以搞定。 首先第一个技巧是对于标准差公式进行变形,这一技巧见过了至少2次,得到结果为: 方差 = 每一块的和的平方的和 / N + 全部方块总和的平方 / N^2 而后将...

chuizhuanrun0253的博客 269

USB HID虚拟电池:Windows零驱动电源状态模拟方案

虚拟电池是一种在硬件测试与功耗分析中替代真实电池、实现可控电源状态注入的关键技术。其核心原理是通过标准USB HID协议(特别是UPS设备类)向操作系统上报可编程的AC/DC状态、剩余电量、容量参数等,绕过内核驱动限制,达成毫秒级响应与跨Windows版本兼容。该技术显著提升SoC能效验证、电池健康度校准及低电量行为触发等场景的可重复性与精度。本文基于CH554微控制器实现符合HID UPS规范的物理层虚拟电池设备,支持零驱动安装、USB原生识别与实时参数调控,适用于笔记本平台功耗建模、电源管理策略验证及自

weixin_35755188的博客 354

Flutter项目在M1/M2 Mac上跑iOS模拟器报错?手把手教你搞定‘arm64架构不兼容’问题

本文详细解析了Flutter项目在M1/M2 Mac上运行iOS模拟器时遇到的‘arm64架构不兼容’问题,提供了多种解决方案,包括排除模拟器的arm64架构、强制使用x86_64架构以及修改插件Podspec文件。帮助开发者快速解决架构兼容性问题,提升开发效率。

weixin_33713707的博客 335

POJ 1191--棋盘分割

题意:给定一8*8的棋盘,每次沿着边

dingzuoer的专栏 532

深入解析Gerber RS274X文件格式:从基础语法到实战应用

本文深入解析PCB制造的核心标准Gerber RS274X文件格式,详细介绍了其基础语法、坐标系统、功能码以及嵌入式光圈定义等关键特性。通过实战案例演示了如何解析和手写Gerber指令,并总结了常见错误与调试技巧,帮助PCB工程师掌握这一与制造工厂沟通的“通用语言”,确保设计准确无误地转化为实体电路板。

weixin_29252171的博客 94

poj1191-dp棋盘分割

点击打开链接 用汉字写的题目,不容小视。 这题要很好的空间想象力,开了一个五维数组dp[k][x][y][xx][yy],表示把对角线为(x,y)-(xx,yy)的矩形分割成k块能获得的最小值。 先看问题,要我们求方差; 如果不化解,有点无从下手.可以为S^2=(1/n)∑xi^2+x^2,  (xi表示每个矩形的权值,x 是平均值。) 而对于一个给定的棋盘平均值是确定的。要求最小,

ZXLS-ZMR的专栏 921

AutoSar标准官网下载

AutoSar文档下载和文档命名格式。。。

m0_56208280的博客 3515

【2026年华为秋招(AI)-2月4日-第一题(100分)- 选择题】(题目+思路+Java&C++&Python解析+在线测试)

本文摘要:本文包含20道选择题,涵盖机器学习、线性代数、Transformer架构、概率统计等多个领域。题目涉及正交矩阵性质、Transformer注意力机制、聚类距离度量、ReAct框架、Softmax函数、混淆矩阵计算、Flash-Attention优化、位置编码、期望计算、归一化方法、矩阵迭代法、矩阵秩、大模型架构、神经网络推理、泊松流性质、SVM核函数以及聚类算法等知识点。每道题均提供解析,帮助理解核心概念和解题思路。

m0_73659489的博客 124

poj1191 棋盘分割(记忆化搜索)

题目传送门:http://poj.org/problem?id=1191 Description 将一个8*8的棋盘进行如下分割:将原棋盘割下一块矩形棋盘并使剩下部分也是矩形,再将剩下的部分继续如此分割,这样割了(n-1)次后,连同最后剩下的矩形棋盘共有n块矩形棋盘。(每次切割都只能沿着棋盘格子的边进行) 原棋盘上每一格有一个分值,一块矩形棋盘的总分为其所含各格分值之和。现在需要把棋盘按上述规则分割成n块矩形棋盘,并使各矩形棋盘总分的均方差最小。 均方差 σ=Σi=1n(xi−xˉ)2nσ=\sqrt \

默的博客 444

RK3588 部署 ArcFace(r100)人脸识别模型:ONNX 转 RKNN 全流程详解

本文介绍了将ArcFace人脸识别模型转换为RKNN格式并部署到RK3588 NPU的方法。ArcFace是主流的人脸特征提取模型,适用于1:1比对和1:N检索等场景。文章详细说明了模型特点(输入112x112 RGB图像,输出512维特征向量)及转换步骤:首先使用torch2onnx将PyTorch模型转为ONNX格式,再通过RKNN工具进行量化转换。提供了完整的Python转换代码,包括预处理配置、模型加载、构建和导出过程。该方法能有效提升边缘设备上的人脸识别实时性,适用于门禁、考勤等应用场景。

J。 415

POJ 1191 棋盘分割

棋盘分割Time Limit: 1000MSMemory Limit: 10000KTotal Submissions: 11213Accepted: 3951Description将一个8*8的棋盘进行如下分割:将原棋盘割下一块矩形棋盘并使剩下部分也是矩形,再将剩下的部分继续如此分割,这样割了(n-1)次后,连同最后剩下的矩形棋盘共有n块矩形棋盘。(每次切割都只能沿着棋盘格子的边进行) 原棋盘上

码代码的猿猿 572

用 SQL Trace 透视 SAP HANA 执行链路:从会话层到内部语句,一次把性能问题抓个现行

摘要:SAP HANA 的 SQL Trace 是性能分析和故障定位的关键工具,它记录会话层所有执行的 SQL 语句。文章解释了 SQL Trace 的工作原理、使用场景和配置方法,包括图形界面和 SQL 命令两种启用方式。重点讨论了存储过程内部语句的捕获问题,指出需要通过设置 internal 参数才能获取过程体中的详细 SQL 语句。文章还提供了实用的排查建议,强调要精准控制 Trace 范围,避免生成过大文件。最后通过真实案例展示了如何利用 SQL Trace 快速定位性能问题。(149字)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1040

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

棋盘分割 POJ - 1191

将一个8*8的棋盘进行如下分割:将原棋盘割下一块矩形棋盘并使剩下部分也是矩形,再将剩下的部分继续如此分割,这样割了(n-1)次后,连同最后剩下的矩形棋盘共有n块矩形棋盘。(每次切割都只能沿着棋盘格子的边进行)  原棋盘上每一格有一个分值,一块矩形棋盘的总分为其所含各格分值之和。现在需要把棋盘按上述规则分割成n块矩形棋盘,并使各矩形棋盘总分的均方差最小。  均方差,其中平均值 ,x i为第i...

Qtt110的博客 338

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

棋盘分割 [POJ - 1191 ]

将一个8*8的棋盘进行如下分割:将原棋盘割下一块矩形棋盘并使剩下部分也是矩形,再将剩下的部分继续如此分割,这样割了(n-1)次后,连同最后剩下的矩形棋盘共有n块矩形棋盘。(每次切割都只能沿着棋盘格子的边进行) 原棋盘上每一格有一个分值,一块矩形棋盘的总分为其所含各格分值之和。现在需要把棋盘按上述规则分割成n块矩形棋盘,并使各矩形棋盘总分的均方差最小。 均方差 ,其中平均值 ,x i为第i块...

Meant_To_Be的博客 254

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

poj1191-棋盘分割问题

这个题想了一会没什么思路,就去搜了别人的解题思路,看了好几个,感觉这个作者的处理很巧妙http://blog.youkuaiyun.com/yihuikang/article/details/7770656,看完以后自己写了一遍,其中记录棋盘和的那个二维数组真的很赞,以及后面的更新再次利用了二维数组,同时棋盘的划分也是很合理,学习了~ #include #include #include #include

NiaNiaJR的专栏 966

【NOI1999】poj1191 棋盘分割

动态规划

YHaX的博客 717

poj1191 棋盘分割 (DP)

题目链接:http://poj.org/problem?id=1191 //题目意思:在一个8*8的棋盘中要划分成n块,并且方差最小 //解题思路:用一个5维的数组来记录状态st[k][x1][y1][x2][y2],表示在第k次时从(x1,y1)到(x2,y2)的矩形切出的和的平方的和(就是已经分两块了,只是这个数组没表示从哪里切)。然后递归到前面一次,选择两个中的一块继续递归。 //

三思 1045

经典问题六.【二维的区间dp】棋盘分割 poj 1191

问题描述: 将一个8*8的棋盘进行如下分割:将原棋盘割下一块矩形棋盘并使剩下部分也是矩形,再将剩下的部分继续如此分割,这样割了(n-1)次后,连同最后剩下的矩形棋盘共有n块矩形棋盘。(每次切割都只能沿着棋盘格子的边进行) 思路: dp[i][x1][y1][x2][y2] 代表从(x1,y1)到(x2,y2)的矩形划分成i块的最优平方和 递推分四种情况: #include <cstdio>

学无纸巾 455

Poj 1191 棋盘分割

题目大意:将一个8*8的棋盘进行如下分割:将原棋盘割下一块矩形棋盘并使剩下部分也是矩形,再将剩下的部分继续如此分割,这样割了(n-1)次后,连同最后剩下的矩形棋盘共有n块矩形棋盘。(每次切割都只能沿着棋盘格子的边进行) 原棋盘上每一格有一个分值,一块矩形棋盘的总分为其所含各格分值之和。现在需要把棋盘按上述规则分割成n块矩形棋盘,并使各矩形棋盘总分的均方差最小。 均方差 ,其中平均值 ,xi为第

Detective_Xin的专栏 684

【动态规划+递归】:poj1191,棋盘分割

http://poj.org/problem?id=1191 明白几点: 1)最终的均方差可以转变成:sqrt( sigma[ i:1-m ]( xi*xi ) / n - ( sum(all) / n )*( sum(all) / n ) ),不懂这个转换的需要补一下数学基础;所以最终决定最小值的是sigma[ i:1-m ]( xi*xi )。 2)动归含义: dp

mmc2015的专栏 699

poj-1191-棋盘分割

棋盘分割Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 15084 Accepted: 5369Description将一个8*8的棋盘进行如下分割:将原棋盘割下一块矩形棋盘并使剩下部分也是矩形,再将剩下的部分继续如此分割,这样割了(n-1)次后,连同最后剩下的矩形棋盘共有n块矩形棋盘。(每次切割都只能沿

大桶爆米花eee 380
上一篇: 【Hdu 5661】 Claris and XOR 位运算+贪心
下一篇: [poj1054] The Troublesome Frog 暴力枚举+剪支
ALPS233
博客等级 码龄11年 25粉丝 191原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值