POJ1191 棋盘分割
Time Limit: 1000MS Memory Limit: 10000K
Total Submissions: Accepted:
题目链接:
http://poj.org/problem?id=1191
解题思路:
关键是方程式的化简,思路清晰,整个题的难度不大。
AC代码(课程PPT)
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<iomanip> using namespace std; int s[][]; //每个格子的分数
int sum[][]; //(1,1)到(i,j)的矩形的分数之和
int res[][][][][]; //fun的记录表 int calSum(int x1, int y1, int x2, int y2)//(x1,y1)到(x2,y2)的矩形的分数之和
{
return sum[x2][y2]-sum[x2][y1-]-sum[x1-][y2]+sum[x1-][y1-];
} int fun(int n, int x1, int y1, int x2, int y2)
{
int t, a, b, c, e, MIN = ;
if (res[n][x1][y1][x2][y2] != -)
return res[n][x1][y1][x2][y2];
if (n == )
{
t = calSum(x1, y1, x2, y2);
res[n][x1][y1][x2][y2] = t * t;
return t * t;
}
for (a = x1; a < x2; a++)
{
c = calSum(a + , y1, x2, y2);
e = calSum(x1, y1, a, y2);
t = min(fun(n - , x1, y1, a, y2) + c * c, fun(n - , a + , y1, x2, y2) + e * e);
if (MIN > t) MIN = t;
}
for (b = y1; b < y2; b++)
{
c = calSum(x1, b + , x2, y2);
e = calSum(x1, y1, x2, b);
t = min(fun(n - , x1, y1, x2, b) + c * c, fun(n - , x1, b + , x2, y2) + e * e);
if (MIN > t) MIN = t;
}
res[n][x1][y1][x2][y2] = MIN;
return MIN;
}
int main() {
memset(sum, , sizeof(sum));
memset(res, -, sizeof(res)); //初始化记录表
int n;
cin>>n;
for (int i=; i<; i++)
for (int j=, rowsum=; j<; j++)
{
cin>>s[i][j];
rowsum +=s[i][j];
sum[i][j] += sum[i-][j] + rowsum;
}
double result = n*fun(n,,,,)-sum[][]*sum[][];
cout<<setiosflags(ios::fixed)<<setprecision()<<sqrt(result/(n*n))<<endl;
return ;
}
POJ1191 棋盘分割的更多相关文章
- poj1191 棋盘分割【区间DP】【记忆化搜索】
棋盘分割 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 16263 Accepted: 5812 Description ...
- poj1191棋盘分割——区间DP
题目:http://poj.org/problem?id=1191 分析题意,可知每次要沿棋盘中的一条线把一块一分为二,取其中一块继续分割: σ最小经分析可知即为每块的xi和的平方最小: 故用区间DP ...
- POJ1191 棋盘分割(DP)
化简一下那个方差得到:$$\sqrt\frac{(\Sigma_{i=1}^nx_i)-n\bar x^2}{n}$$ 除了$\Sigma_{i=1}^nx_i$这部分未知,其余已知,而那部分显然越大 ...
- POJ1191棋盘分割
题目:http://poj.org/problem?id=1191 1.分析式子!!! 发现xba是定值,σ的大小仅和∑ xi^2 有关.故dp条件是平方和最小. 2.分出一块就像割掉一条,只需枚举从 ...
- poj1191 棋盘分割。 dp
连接:http://poj.org/problem?id=1191 思路:额,其实就是直接搞记录一下就可以了. #include <stdio.h> #include <string ...
- 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 ...
- NOI 193棋盘分割.cpp
193:棋盘分割 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 将一个8*8的棋盘进行如下分割:将原棋盘割下一块矩形棋盘并使剩下部分也是矩形,再将剩下的部分 ...
- HDU 2517 / POJ 1191 棋盘分割 区间DP / 记忆化搜索
题目链接: 黑书 P116 HDU 2157 棋盘分割 POJ 1191 棋盘分割 分析: 枚举所有可能的切割方法. 但如果用递归的方法要加上记忆搜索, 不能会超时... 代码: #include& ...
随机推荐
- Pycharm 主题背景色的配置
PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具.那么它的主题背景如何设置呢? 具体操作: 步骤一:选择 “file” 菜单下的 “se ...
- APICloud的tapmode用法
在开发的过程中,直接给元素绑定事件属性onclick会点击没反应,这时,给标签加上tapmode,就解决了问题,查了一下,原来tapmode具有加速点击事件功能,在触发事件中加入tapmode可以消除 ...
- LeetCode 1105. Filling Bookcase Shelves
原题链接在这里:https://leetcode.com/problems/filling-bookcase-shelves/ 题目: We have a sequence of books: the ...
- LeetCode 439. Ternary Expression Parser
原题链接在这里:https://leetcode.com/problems/ternary-expression-parser/description/ 题目: Given a string repr ...
- 按值传递与按值引用详解(java版)
http://blog.csdn.net/zzp_403184692/article/details/8184751
- S1_搭建分布式OpenStack集群_06 nova服务配置 (控制节点)
一.创建数据库(控制节点)创建数据库以及用户:# mysql -uroot -p12345678MariaDB [(none)]> CREATE DATABASE nova_api;MariaD ...
- 如何用Windbg从dump获取计算机名、主机名
对内存转储时发生的事情有一定的了解是非常重要的.这有助于您确定要执行哪些WinDbg命令,并为您提供一些有关如何解释这些命令输出的上下文.我正在查看一个服务器的内存转储,该服务器存在性能问题.我在内存 ...
- 【JZOJ6229】【20190621】san
题目 \(n\)个点\(m\)条边的有向图,每个点有点权 你可以选择拓扑序的一个区间的 最大化点权和 $n \le 50 , m \le \frac{n*(n-1)}{2} , 0 \le |a_i ...
- HTML | CSS | JavaScript 常见错误
持续更新 超链接鼠标悬浮后的状态 a:hover 拼写 图片文件的路径问题
- 去参加了十四届D2前端大会~
朋友喊我去一起去d2,原来一直在加班,没有想去的动力,后来业务上线,幸运的入手了别人转的一张票(也不便宜啊)- 讲了五个挑战 端侧渲染体系的重塑,从PC时代到无线时代,再到未来的IOT时代,在渲染方面 ...