连接: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的更多相关文章

  1. poj1191 棋盘分割【区间DP】【记忆化搜索】

    棋盘分割 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 16263   Accepted: 5812 Description ...

  2. poj1191棋盘分割——区间DP

    题目:http://poj.org/problem?id=1191 分析题意,可知每次要沿棋盘中的一条线把一块一分为二,取其中一块继续分割: σ最小经分析可知即为每块的xi和的平方最小: 故用区间DP ...

  3. POJ1191 棋盘分割(DP)

    化简一下那个方差得到:$$\sqrt\frac{(\Sigma_{i=1}^nx_i)-n\bar x^2}{n}$$ 除了$\Sigma_{i=1}^nx_i$这部分未知,其余已知,而那部分显然越大 ...

  4. P1436 棋盘分割[dp]

    题目描述 将一个8*8的棋盘进行如下分割:将原棋盘割下一块矩形棋盘并使剩下部分也是矩形,再将剩下的两部分中的任意一块继续如此分割,这样割了(n-1)次后,连同最后剩下的矩形棋盘共有n块矩形棋盘.(每次 ...

  5. POJ 1191 棋盘分割(DP)

    题目链接 大体思路看,黑书...其他就是注意搞一个in数组,这样记忆化搜索,貌似比较快. #include <cstdio> #include <cstring> #inclu ...

  6. POJ1191棋盘分割

    题目:http://poj.org/problem?id=1191 1.分析式子!!! 发现xba是定值,σ的大小仅和∑ xi^2 有关.故dp条件是平方和最小. 2.分出一块就像割掉一条,只需枚举从 ...

  7. NOI1999 JZYZOJ1289 棋盘分割 dp 方差的数学结论

    http://172.20.6.3/Problem_Show.asp?id=1289 除了下标一坨一坨屎一样挺恶心其他都还挺容易的dp,这道题才发现scanf保留小数位是四舍五入的,惊了. f[k][ ...

  8. poj 1191 棋盘分割(dp + 记忆化搜索)

    题目:http://poj.org/problem?id=1191 黑书116页的例题 将方差公式化简之后就是 每一块和的平方 相加/n , 减去平均值的平方. 可以看出来 方差只与 每一块的和的平方 ...

  9. POJ1191 棋盘分割

    Time Limit: 1000MS Memory Limit: 10000K Total Submissions: Accepted: 题目链接: http://poj.org/problem?id ...

随机推荐

  1. 什么是Java序列化和反序列化,如何实现Java序列化

    1.概念 序列化:把Java对象转换为字节序列的过程. 反序列化:把字节序列恢复为Java对象的过程. 2.用途 对象的序列化主要有两种用途: 1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个 ...

  2. The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path(Myeclipse添加Server Library)

    网上找练习的项目导入到myeclipse项目发现每个JSP 出现错误The superclass "javax.servlet.http.HttpServlet" was not ...

  3. 《图解HTTP》书摘

    图解HTTP 上野宣.于均良 1.3 网络基础 TCP/IP 2016-03-03 相互通信,双方就必须基于相同的方法.比如,如何探测到通信目标.由哪一边先发起通信.使用哪种语言进行通信.怎样结束通信 ...

  4. AndroidManifest.xml的targetSdkVersion 与 project.properties中target

    (1)minSdkVersion与maxSdkVersion :在安装程序的时候,如果目标设备的API < minSdkVersion,或者目标设备的API > maxSdkVersion ...

  5. php composer使用过程

    1.安装composer curl -sS https://getcomposer.org/installer | php mv composer.phar /usr/local/bin/compos ...

  6. 使用RequireJS并实现一个自己的模块加载器 (二)

    2017 新年好 ! 新年第一天对我来说真是悲伤 ,早上兴冲冲地爬起来背着书包跑去实验室,结果今天大家都休息 .回宿舍的时候发现书包湿了,原来盒子装的牛奶盖子松了,泼了一书包,电脑风扇口和USB口都进 ...

  7. 2017-2018 ACM-ICPC, Asia Daejeon Regional Contest Solution

    A:Broadcast Stations 留坑. B:Connect3 题意:四个栈,每次放棋子只能放某个栈的栈顶,栈满不能放,现在给出(1, x) 表示黑子放在第x个栈的第一个位置,白子放在第b个栈 ...

  8. 使用nagios+python监控nginx进程数

    1.编写python脚本监控nginx #!/usr/bin/python # -*- coding: utf-8 -*- import os, sys, time import string imp ...

  9. Java Int和Integer有什么区别?

    Int int是我们常说的整型数字,是Java的8个原始数据类型(Primitive Type:boolean.byte.short.char.int.float.double.long)之一.Jav ...

  10. git-format-patch如何指定补丁生成的Subject格式

    答:使用-N来指定,如: git format-patch -N <commit-id> 生成的补丁中Subject将以[PATCH]的格式呈现,例如:Subject: [PATCH] a ...