http://poj.org/problem?id=1191

黑书上P116 想了挺久 没想出来 想推出一公式来着 退不出来。。

想偏了  正解:递归

 #include <iostream>
#include<cstdio>
#include<cstring>
#include<stdlib.h>
#include<algorithm>
#include<cmath>
using namespace std;
#define INF 0xfffffff
#define LL long long
int dp[][][][][];
int aa[][],n;
int divide(int k,int a,int b,int c,int d)
{
int i,j,minz = INF,g;
if(dp[k][a][b][c][d])
return dp[k][a][b][c][d];
if(k==n)
{
int s = ;
for(i = a; i <= c ; i++)
for(j = b ; j <= d ; j++)
s+=aa[i][j];
dp[k][a][b][c][d] = s*s;
return s*s;
}
for(i = a+ ; i <= c ; i++)
{
int s = ;
for(g = i ; g <= c ; g++)
for(j = b ; j <= d ; j++)
s+=aa[g][j];
minz = min(minz,s*s+divide(k+,a,b,i-,d));
s = ;
for(g = a ; g <= i- ; g++)
for(j = b ; j <= d ; j++)
s+=aa[g][j];
minz = min(minz,s*s+divide(k+,i,b,c,d));
}
for(i = b+ ; i <= d ; i++)
{
int s = ;
for(g = a ; g <= c ; g++)
for(j = i ; j <= d ; j++)
s+=aa[g][j];
minz = min(minz,s*s+divide(k+,a,b,c,i-));
s = ;
for(g = a ; g <= c ; g++)
for(j = b ; j <= i- ; j++)
s+=aa[g][j];
minz = min(minz,s*s+divide(k+,a,i,c,d));
}
dp[k][a][b][c][d] = minz;
return minz;
}
int main()
{
int i,j;
while(scanf("%d",&n)!=EOF)
{
double s=;
memset(dp,,sizeof(dp));
int m = ;
n--;
for(i = ; i <= m ;i++)
for(j = ; j <= m ; j++)
{
scanf("%d",&aa[i][j]);
s+=double(aa[i][j]);
}
s = s/double(n+);
int ans = divide(,,,m,m);
double an = 1.0/double(n+)*double(ans)-s*s;
printf("%.3lf\n",sqrt(an));
}
return ;
}

下面那个不是 贴错了

 #include <iostream>
#include<cstdio>
#include<cstring>
#include<stdlib.h>
#define N 5010
#define M 3010
#define INF 0xfffffff
using namespace std;
int dp[M][N],h[N];
int main()
{
int i,j,n,m,g;
scanf("%d%d",&m,&n);
for(i = ; i <= n ;i++)
scanf("%d",&h[i]);
for(i = ; i <= m ;i++)
for(j = ; j <= n ;j++)
dp[i][j] = INF;
int o = INF;
for(i = ; i < n ;i++)
{
dp[][i] = min(o,(h[i]-h[i-])*(h[i]-h[i-]));
o = min(dp[][i],o);
}
for(i = ; i <= m ; i++)
{
int o = INF;
for(j = *i ; j < n-(m-i)* ;j++)
{
if(j-<(n-(m-i+)*))
dp[i][j] = min(o,dp[i-][j-]+(h[j]-h[j-])*(h[j]-h[j-]));
else
dp[i][j] = min(o,dp[i-][j-]+(h[j]-h[j-])*(h[j]-h[j-]));
o = min(o,dp[i][j]);
}
}
printf("%d\n",dp[m][n-]);
return ;
}

poj棋盘分割(记忆化)的更多相关文章

  1. POJ - 1191 棋盘分割 记忆递归 搜索dp+数学

    http://poj.org/problem?id=1191 题意:中文题. 题解: 1.关于切割的模拟,用递归 有这样的递归方程(dp方程):f(n,棋盘)=f(n-1,待割的棋盘)+f(1,割下的 ...

  2. POJ 1088 滑雪 (记忆化搜索)

    题目链接:http://poj.org/problem?id=1088 题意很好懂,就是让你求一个最长下降路线的长度. dp[i][j]记录的是i j这个位置的最优的长度,然后转移方程是dp[i][j ...

  3. poj 2662(Dijkstra+记忆化)

    题目链接:http://poj.org/problem?id=2662 思路:首先路径的选择,如果B点到终点的距离比A点到终点的最短距离短,那么就从A走到B,换句话说,就是每次都是择优选择更靠近终点的 ...

  4. POJ 1088 滑雪 记忆化DP

    滑雪 Time Limit: 1000MS   Memory Limit: 65536K       Description Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度 ...

  5. POJ 1088 滑雪 记忆化优化题解

    本题有人写是DP,只是和DP还是有点区别的,应该主要是记忆化 Momoization 算法. 思路就是递归,然后在递归的过程把计算的结果记录起来,以便后面使用. 非常经典的搜索题目,这样的方法非常多题 ...

  6. 洛谷 P3956 棋盘(记忆化搜索)

    嗯... 题目链接:https://www.luogu.org/problem/P3956 这是一道比较好搜的题,注意一些剪枝.预处理和魔法的处理问题(回溯). AC代码: #include<c ...

  7. POJ 1088 DP=记忆化搜索

    话说DP=记忆化搜索这句话真不是虚的. 面对这道题目,题意很简单,但是DP的时候,方向分为四个,这个时候用递推就好难写了,你很难得到当前状态的前一个真实状态,这个时候记忆化搜索就派上用场啦! 通过对四 ...

  8. POJ 1390 Blocks(记忆化搜索+dp)

    POJ 1390 Blocks 砌块 时限:5000 MS   内存限制:65536K 提交材料共计: 6204   接受: 2563 描述 你们中的一些人可能玩过一个叫做“积木”的游戏.一行有n个块 ...

  9. POJ 1088 滑雪(记忆化搜索+dp)

    POJ 1088 滑雪 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 107319   Accepted: 40893 De ...

随机推荐

  1. 踩过的坑系列之InputStream.read(byte[])方法

    项目之前都是好好的,最近现场那边出现一个问题,报错不是合法的json字符串,这个json字符串是通过http请求访问获得的. 通过直接在浏览器上直接访问http这个请求,发现返回的json也是完全正确 ...

  2. CentOS7 firewall的使用

    # 查看区域 firewall-cmd --get-zones # 查看默认区域 firewall-cmd --get-default-zone # 给区域添加永久性服务 firewall-cmd - ...

  3. js搜索框 js仿百度搜索 js下拉框 jQuery.Autocomplete使用

    做了一个网站,需要根据文本框的输入模糊搜索数据库内容给出提示供用户选择,就找到了jQuery.Autocomplete 效果如下图: 该插件托管在github上,具体地址:https://github ...

  4. 使用curl获取网站的http的状态码

    发布:thebaby   来源:net     [大 中 小] 本文分享一例shell脚本,一个使用curl命令获取网站的httpd状态码的例子,有需要的朋友参考下.本文转自:http://www.j ...

  5. C# 目录与文件管理

    文件读写 学习了一点点希望对以后的学习工作有帮助 在应用程序中基本任务是对数据的操作,这就是对数据进行访问和保存挤兑数据的读写,应用程序访问一个文本文件叫做“读”:对文本文件的内容进行修改后保存这些修 ...

  6. ArcGIS API for JavaScript 学习笔记(一)

    终于开始了 噩梦一般的ArcGIS 我特别不习惯这种结构化的程序写法 写起来特别吃力 特别是把几个功能整合到同一个页面去的时候. 写程序的时候,一般我喜欢先写个Demo然后再把Demo上面的功能加到页 ...

  7. git reflog 和git log :no branch git 提交方式

    git reflog 和git log的区别,外加git cherry-pick的一种用法 git reflog 可以查看所有分支的所有操作记录(包括(包括commit和reset的操作),包括已经被 ...

  8. STL set_difference set_intersection set_union 操作

    以下是STL algorithm的几个函数,使用的条件是有序容器,所以 vector在被sort了之后是可以使用的,set也是可以使用的. set_difference 这个是求得在第一个容器中有,第 ...

  9. cocos2dx 3.4 截图代码

    Size size = Director::sharedDirector()->getWinSize(); //定义一个屏幕大小的渲染纹理 RenderTexture* pScreen = Re ...

  10. 解决WP8应用里ListBox绑定数据变多导致越来越卡

    ListBox控件绑定数据,当滑动到底部的时候加载数据到列表上,这样就会产生一个问题,当ListBox上面绑定的数据有几千条的时候,界面将会卡顿,我们可以通过在ListBox上只绑定指定数量的数据,其 ...