POJ1191棋盘分割
题目:http://poj.org/problem?id=1191
1.分析式子!!!
发现xba是定值,σ的大小仅和∑ xi^2 有关。故dp条件是平方和最小。
2.分出一块就像割掉一条,只需枚举从四个方向割+割多宽。
(赋初值之小优美)
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int n,a,sum[][],sm[],ss,d[][][][][];
bool vis[][][][][];
double xba,ans;
int summ(int x1,int y1,int x2,int y2)
{
int s=sum[x2][y2]-sum[x1-][y2]-sum[x2][y1-]+sum[x1-][y1-];
return s*s;
}
int dfs(int x1,int y1,int x2,int y2,int k)
{
if(vis[x1][y1][x2][y2][k])return d[x1][y1][x2][y2][k];
vis[x1][y1][x2][y2][k]=;
if(k==)return d[x1][y1][x2][y2][k]=summ(x1,y1,x2,y2);
for(int i=x1;i<x2;i++)
d[x1][y1][x2][y2][k]=min(d[x1][y1][x2][y2][k],
min(dfs(i+,y1,x2,y2,k-)+summ(x1,y1,i,y2),dfs(x1,y1,i,y2,k-)+summ(i+,y1,x2,y2)));
for(int i=y1;i<y2;i++)
d[x1][y1][x2][y2][k]=min(d[x1][y1][x2][y2][k],
min(dfs(x1,i+,x2,y2,k-)+summ(x1,y1,x2,i),dfs(x1,y1,x2,i,k-)+summ(x1,i+,x2,y2)));
return d[x1][y1][x2][y2][k];
}
int main()
{
scanf("%d",&n);
memset(d,,sizeof d);
for(int i=;i<=;i++)
{
ss=;
for(int j=;j<=;j++)
{
scanf("%d",&a);
sm[j]+=a;
ss+=sm[j];
sum[i][j]=ss;
}
}
dfs(,,,,n);
xba=sum[][]/(n*1.0);
ans=d[][][][][n]+xba*xba*n-*xba*sum[][];
ans=sqrt(ans/n);
printf("%.3lf",ans);
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 棋盘分割。 dp
连接:http://poj.org/problem?id=1191 思路:额,其实就是直接搞记录一下就可以了. #include <stdio.h> #include <string ...
- POJ1191 棋盘分割
Time Limit: 1000MS Memory Limit: 10000K Total Submissions: Accepted: 题目链接: http://poj.org/problem?id ...
- 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& ...
随机推荐
- consumer的DubboResponseTimeoutScanTimer线程
考虑这样一种情况,由于网络延时,consumer先抛出超时异常,一段时间后又收到了已经超时的响应,dubbo是怎么处理的? 拆分为3步看: 1. consumer的DubboResponseTimeo ...
- Nginx在windows上安装 及 Nginx的配置及优化
https://www.cnblogs.com/Chiler/p/8027167.html http://www.runoob.com/linux/nginx-install-setup.html 前 ...
- Windows各种各种消息投递函数
1.SendMessage:发送消息给指定的窗口过程:直到窗口过程处理了消息才返回. 2.PostMessage:将消息放入消息队列(与指定窗口创建的线程相关)中:无需等待消息处理,立即返回. 不 ...
- 使用Windbg解析dump文件
WinDbg OllyDbg SoftICE (已经停止更新) 虽说WinDbg在无源码调试方面确实比较困难,但在调试内核方面却真的有独到之处. https://www.pediy.com/kssd/ ...
- learning docker steps(2) ----- docker contailner 初次体验
参考:https://docs.docker-cn.com/get-started/part2/ Dockerfile的内容如下所示: # 将官方 Python 运行时用作父镜像 FROM pytho ...
- 使用scrapy-redis构建简单的分布式爬虫
前言 scrapy是python界出名的一个爬虫框架.Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中. 虽然scr ...
- [转载]struts1小项目
http://www.blogjava.net/nokiaguy/archive/2009/01/13/251101.html
- Android Touch事件之一:Touch事件在父ViewGroup和子View之间的传递篇
2015-11-26 17:00:22 前言:Android的Touch事件传递和View的实现紧密相连,因此理解Touch事件的传递,有助于我们更好的理解View的工作原理. 1. 几个重要的方法: ...
- python synflood test
#!/usr/bin/env python ######################################### # # SYNflood - A multithreaded SYN F ...
- FZU 1202
http://acm.fzu.edu.cn/problem.php?pid=1202 二分图最大匹配,问哪些边是必要的,O(n^3)的方法 删边的时候把连接关系也要删掉,如果在此基础上无法找到增广路, ...