poj1191 棋盘分割。 dp
连接:http://poj.org/problem?id=1191
思路:额,其实就是直接搞记录一下就可以了。
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
#include <stdlib.h>
#include <vector>
#include <queue>
#include <stack>
#include <cmath>
#define loop(s,i,n) for(i = s;i < n;i++)
#define cl(a,b) memset(a,b,sizeof(a))
int map[][];
int sum[][][][];
int dp[][][][][];
double average;
int n;
using namespace std;
void init()
{
int i,j,ii,jj,iii,jjj;
loop(,i,)
{
loop(,j,)
{
loop(i,ii,)
{
loop(j,jj,)
{
int ans;
ans = ;
loop(i,iii,ii+)
loop(j,jjj,jj+)
ans+=map[iii][jjj];
ans = (ans)*(ans);
sum[i][j][ii][jj] += ans;
} }
}
}
}
int deal(int k,int x,int y,int xx,int yy)
{ if(dp[k][x][y][xx][yy] >= ) return dp[k][x][y][xx][yy];
if(k == n)
return sum[x][y][xx][yy]; int i,j,ans;
dp[k][x][y][xx][yy] = ;
for(i = x;i <= xx-;i++)
{
ans = min(deal(k+,x,y,i,yy)+sum[i+][y][xx][yy],deal(k+,i+,y,xx,yy)+sum[x][y][i][yy]);
dp[k][x][y][xx][yy] = min(ans,dp[k][x][y][xx][yy]);
} for(j = y;j <= yy-;j++)
{
ans = min(deal(k+,x,y,xx,j)+sum[x][j+][xx][yy],deal(k+,x,j+,xx,yy)+sum[x][y][xx][j]);
dp[k][x][y][xx][yy] = min(ans,dp[k][x][y][xx][yy]);
} return dp[k][x][y][xx][yy];
}
int main()
{
//int n;
//
// freopen("in.txt","r",stdin);
while(~scanf("%d",&n))
{
int i,j;
average = ;
loop(,i,)
{
loop(,j,)
scanf("%d",map[i]+j),average += map[i][j];
} average = 1.0*average/n;
cl(sum,);
cl(dp,-);
init();
deal(,,,,);
// puts("yes"); double ans = sqrt(dp[][][][][]*1.0/n-average*average);
printf("%.3f",ans);
}
return ;
}
poj1191 棋盘分割。 dp的更多相关文章
- 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$这部分未知,其余已知,而那部分显然越大 ...
- P1436 棋盘分割[dp]
题目描述 将一个8*8的棋盘进行如下分割:将原棋盘割下一块矩形棋盘并使剩下部分也是矩形,再将剩下的两部分中的任意一块继续如此分割,这样割了(n-1)次后,连同最后剩下的矩形棋盘共有n块矩形棋盘.(每次 ...
- POJ 1191 棋盘分割(DP)
题目链接 大体思路看,黑书...其他就是注意搞一个in数组,这样记忆化搜索,貌似比较快. #include <cstdio> #include <cstring> #inclu ...
- POJ1191棋盘分割
题目:http://poj.org/problem?id=1191 1.分析式子!!! 发现xba是定值,σ的大小仅和∑ xi^2 有关.故dp条件是平方和最小. 2.分出一块就像割掉一条,只需枚举从 ...
- NOI1999 JZYZOJ1289 棋盘分割 dp 方差的数学结论
http://172.20.6.3/Problem_Show.asp?id=1289 除了下标一坨一坨屎一样挺恶心其他都还挺容易的dp,这道题才发现scanf保留小数位是四舍五入的,惊了. f[k][ ...
- poj 1191 棋盘分割(dp + 记忆化搜索)
题目:http://poj.org/problem?id=1191 黑书116页的例题 将方差公式化简之后就是 每一块和的平方 相加/n , 减去平均值的平方. 可以看出来 方差只与 每一块的和的平方 ...
- POJ1191 棋盘分割
Time Limit: 1000MS Memory Limit: 10000K Total Submissions: Accepted: 题目链接: http://poj.org/problem?id ...
随机推荐
- SQL---->mySQl查看和更改端口
修改端口: 采用dmg方式安装的mysql,默认启动端口为3307,不是默认的3306.如果想改为3306,可以编辑 /Library/LaunchDaemons /com.Oracle.os ...
- Django权限系统auth模块详解
转自:原文出处 auth模块是Django提供的标准权限管理系统,可以提供用户身份认证, 用户组和权限管理. auth可以和admin模块配合使用, 快速建立网站的管理系统. 在INSTALLED_A ...
- wsdl客户端代码生成的方法
在jdk的bin目录下有一个wsimport.exe的工具,使用该工具命令生产java客户端代码: 命令如下: wsimport -keep -d d:\ -s d:\src -p com.map ...
- 【react 条件渲染】在render的html中使用 三元运算符 进行条件渲染
return ( {renderedPages.map(page => ( <Button key={page} onClick={() => onPageChange(page)} ...
- Flask知识总汇
Flask基础 Flask基础使用与配置 Flask路由系统与模板系统 Flask视图函数 Flask请求与响应 Flask的session操作 Flask中间件 Flask连接数据库 Flask使用 ...
- 转载 io多路复用
作者:ZingpLiu 出处:http://www.cnblogs.com/zingp/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接. 回到 ...
- shell export 命令
export 命令作用是 把变量导出 也可以用export来定义环境变量 导入 定义的变量 这样的话类似于python面向对象的self.变量 一样 在脚本到处调用这个变量
- android 百度地图 No implementation found for int
java.lang.UnsatisfiedLinkError: No implementation found for int com.baidu.platform.comjni.map.common ...
- Linux服务器安装jdk+tomcat
一.工具 1.1.SecureCRTSecureFX_7.0.0.326 下载地址:https://yunpan.cn/cRnxrv2eaQMwD 访问密码 a018 1.2.jdk 下载地址:问度 ...
- postman设置环境变量,字段值经过json转换后数值字节长度超过上限的问题
在使用Tests进行环境变量的设置时,遇到这么一种情况,在返回的responseBody中的userId字段,字段返回的是数值类型,再经过json转换之后,发现保存的值跟接口返回的值不一致:如下图: ...