http://172.20.6.3/Problem_Show.asp?id=1289

除了下标一坨一坨屎一样挺恶心其他都还挺容易的dp,这道题才发现scanf保留小数位是四舍五入的,惊了。
f[k][x1][y1][x2][y2]
嗯写的时候猜错结论了,本来以为是求下属分配方案中平方和与平均数平方*k的差最小的方案赋给f,没想到是直接找最小的。
代码
 #include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<queue>
using namespace std;
int n;
int a[][]={};
double f[][][][][]={};
bool vis[][][][][]={};
int main(){
scanf("%d",&n);
for(int i=;i<=;i++){
for(int j=;j<=;j++){
scanf("%d",&a[i][j]);
a[i][j]+=a[i][j-];
a[i][j]+=a[i-][j];
a[i][j]-=a[i-][j-];
}
}
for(int i=;i<=;i++){
for(int j=;j<=;j++){
for(int w=i;w<=;w++){
for(int q=j;q<=;q++){
f[][i][j][w][q]=1.0*(a[w][q]-a[i-][q]-a[w][j-]+a[i-][j-]);
f[][i][j][w][q]*=f[][i][j][w][q];vis[][i][j][w][q]=;
}
}
}
}
double ro=1.0*a[][]/(1.0*n);
ro=ro*ro;
for(int k=;k<=n;k++){
for(int i=;i<=;i++){
for(int j=;j<=;j++){
for(int w=i;w<=;w++){
for(int q=j;q<=;q++){
for(int z=i;z<w;z++){
if((vis[k-][i][j][z][q]&&vis[][z+][j][w][q])&&(vis[k][i][j][w][q]==||f[k][i][j][w][q]-(f[k-][i][j][z][q]+f[][z+][j][w][q])>)){
f[k][i][j][w][q]=f[k-][i][j][z][q]+f[][z+][j][w][q];vis[k][i][j][w][q]=;
}
if((vis[][i][j][z][q]&&vis[k-][z+][j][w][q])&&(vis[k][i][j][w][q]==||f[k][i][j][w][q]-(f[][i][j][z][q]+f[k-][z+][j][w][q])>)){
f[k][i][j][w][q]=f[][i][j][z][q]+f[k-][z+][j][w][q];vis[k][i][j][w][q]=;
}
}
for(int z=j;z<q;z++){
if((vis[k-][i][j][w][z]&&vis[][i][z+][w][q])&&(vis[k][i][j][w][q]==||f[k][i][j][w][q]-(f[k-][i][j][w][z]+f[][i][z+][w][q])>)){
f[k][i][j][w][q]=f[k-][i][j][w][z]+f[][i][z+][w][q];vis[k][i][j][w][q]=;
}
if((vis[][i][j][w][z]&&vis[k-][i][z+][w][q])&&(vis[k][i][j][w][q]==||f[k][i][j][w][q]-(f[][i][j][w][z]+f[k-][i][z+][w][q])>)){
f[k][i][j][w][q]=f[][i][j][w][z]+f[k-][i][z+][w][q];vis[k][i][j][w][q]=;
}
}
}
}
}
}
}
double z=f[n][][][][]/n-ro;
z=sqrt(z);
printf("%.3f\n",z);
return ;
}

NOI1999 JZYZOJ1289 棋盘分割 dp 方差的数学结论的更多相关文章

  1. P1436 棋盘分割[dp]

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

  2. POJ 1191 棋盘分割(DP)

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

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

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

  4. [NOI1999] 棋盘分割(推式子+dp)

    http://poj.org/problem?id=1191 棋盘分割 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 156 ...

  5. [NOI1999] 棋盘分割

    COGS 100. [NOI1999] 棋盘分割 http://www.cogs.pro/cogs/problem/problem.php?pid=100 ★★   输入文件:division.in  ...

  6. POJ1991 NOI1999棋盘分割

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

  7. HDU 2517 / POJ 1191 棋盘分割 区间DP / 记忆化搜索

    题目链接: 黑书 P116 HDU 2157 棋盘分割 POJ 1191 棋盘分割 分析:  枚举所有可能的切割方法. 但如果用递归的方法要加上记忆搜索, 不能会超时... 代码: #include& ...

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

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

  9. POJ 1191棋盘分割问题

    棋盘分割问题 题目大意,将一个棋盘分割成k-1个矩形,每个矩形都对应一个权值,让所有的权值最小求分法 很像区间DP,但是也不能说就是 我们只要想好了一个怎么变成两个,剩下的就好了,但是怎么变,就是变化 ...

随机推荐

  1. 【BZOJ】1176: [Balkan2007]Mokia

    [题意]n*n的矩阵,初始值为0(题面有误),m次操作,增加一个格子的权值,或查询子矩阵和.n<=2*10^6.(m应该较题面所述偏大). [算法]CDQ分治(算法知识见数据结构) [题解]三维 ...

  2. Global.asax文件—ASP.NET细枝末节(1)

    说明 Global的解释是全局的.全球的. Global.asax 文件,有时候叫做 ASP.NET 应用程序文件,提供了一种在一个中心位置响应应用程序级或模块级事件的方法.你可以使用这个文件实现应用 ...

  3. 登入时session的处理方式

    暂时理解不够彻底  有空在详细介绍,先记录代码 1:创建一个工具类  存取当前登录用户 package com.liveyc.eloan.util; import javax.servlet.http ...

  4. Django之kindeditor

    1.什么是kindeditor? KindEditor是一套开源的HTML可视化编辑器,主要用于让用户在网站上获得所见即所得编辑效果,兼容IE.Firefox.Chrome.Safari.Opera等 ...

  5. zepto.js 实现原理解析

    zepto 是移动端常用的 dom 库,代码轻巧,操作方式类同 jquery.那么 zepto 的核心实现原理是什么呢?

  6. javascript中的数组去重

    1.方法一:双层循环,外层循环元素,内层循环做比较,若相同则跳过,不同则加入结果集中,获取没重复的最右侧的值放入数组中 Array.prototype.distinct = function(){ v ...

  7. phinx:php数据库迁移

    Phinx使你的php app进行数据迁移的过程变得异常轻松,在五分钟之内你就可以安装好Phinx 并进行数据迁移. 特性 使用php代码进行数据迁移 部署模式下迁移 五分钟之内使用 不再担心数据库的 ...

  8. shell中$*与$@的区别

    $*所有的位置参数,被作为一个单词 注意:"$*"必须被""引用 $@ 与$*同义,但是每个参数都是一个独立的""引用字串,这就意味着参数被 ...

  9. ASP.NET Core 2.0 MVC 发布部署--------- SUSE 16 Linux Enterprise Server 12 SP2 X64 具体操作

    .Net Core 部署到 SUSE 16 Linux Enterprise Server 12 SP2 64 位中的步骤 1.安装工具 1.apache 2..Net Core(dotnet-sdk ...

  10. Linux上java环境变量配置

    1.java配置 配置环境变量在/etc/profile下增加 # set Java environment JAVA_HOME=/usr/share/jdk1.6.0_43 PATH=$JAVA_H ...