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& ...
随机推荐
- vue 表单校验(二)
vue 表单校验(二) vue element-ui表单校验 由于现在使用element-ui进行form表单校验,因而使用其自带的校验规则进行校验,发现有些并不是那么好校验,或者说是校验起来很繁琐, ...
- Centos中彻底删除Mysql(rpm、yum安装的情况)
[root@data lib]# rpm -qa¦grep mysqlmysql-5.5.25-1.el6.remi.i686mysql-libs-5.5.25-1.el6.remi.i686comp ...
- Python简单网页爬虫——极客学院视频自动下载
http://blog.csdn.net/supercooly/article/details/51003921
- SQL 查询重复的行
select * from tbsold where orderid in (select orderid from tbsold group by orderid having count(orde ...
- java修饰符的作用范围
访问修饰符: private 缺省 protected public 作用范围: private 被private修饰的属性和方法,不能被其他类访问,子类不能继承也不能访问.只能在所在类内部访问.缺省 ...
- DevExpress WPF入门指南:如何自动或手动添加DXSplashScreen控件
<DevExpress v17.2 版本更新公开课>点击报名 DevExpress WPF 的 DXSplashScreen 控件在应用加载的时候显示一个启动界面.添加DXSplashSc ...
- Translate Exercises(4)
周五翻译课记录. ---------------------------------- (1)and it is imagined by many that the operations of the ...
- IP addresses in C#
在.Net网络库里面最大的优点就是IP地址和端口被成对处理,相比于UNIX中用的方法真是一个巨大的令人欢迎的进步..NET定义了两个类来处理关于IP地址的问题. One of the biggest ...
- centos 7安装tomcat
1.下载安装包 http://tomcat.apache.org/download-80.cgi 2.安装tomcat 注:安装前需要安装jdk环境 #解压 [root@localhost soft] ...
- vue-resource 上传图片
const formData = new FormData()formData.append('file',img,params.name);formData.append('id',params.i ...