题意:

给出一个n*m的地图,要求从左上角(0, 0)走到右下角(n-1, m-1)。

地图中每个格子中有一个值。然后根据这些值求出一个最小值。

这个最小值要这么求——

这是我们从起点走到终点的路径,其中N是地图的长,M是地图的宽,Ai表示路径中第i个点的值,Aavg表示路径中所有的点的值的平均值。要求这个式子的值最小。

我们可以将它转化为

好了,推到这里,我们需要的数学知识就结束了(实际上以我的数学知识也只能做到这里了……)。然后dp就好了——

Dp[i][j][k],i表示第i行,j表示第j列,k表示所有Ai的和,这个里面保存的是所有 的值。

然后dp下去就好了.

dp[i][j][k] = min(dp[i][j][k], dp[i-1][j][k-mp[i-1][j]]+mp[i][j]*mp[i][j], dp[i][j][k-mp[i][j-1]]+mp[i][j]*mp[i][j]);

具体见代码:

 #include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
const int M = ;
const int Mod = ;
const int N = ;
const int NN = ; int t, n, m;
int dp[N][N][NN], mp[N][N];
int ans; int Min(int x, int y)
{
if(x == -) return y;
return x < y ? x : y;
} void Dp()
{
memset(dp, -, sizeof(dp));
dp[][][mp[][]] = mp[][]*mp[][];
for(int i = ; i < n; i++)
{
for(int j = ; j < m; j++)
{
if(i- >= )
{
for(int k = mp[i][j]; k < NN; k++)
{
if(dp[i-][j][k-mp[i][j]] != -)
{
dp[i][j][k] = Min(dp[i][j][k], dp[i-][j][k-mp[i][j]]+mp[i][j]*mp[i][j]);
}
}
}
if(j- >= )
{
for(int k = mp[i][j]; k < NN; k++)
{
if(dp[i][j-][k-mp[i][j]] != -)
{
dp[i][j][k] = Min(dp[i][j][k], dp[i][j-][k-mp[i][j]]+mp[i][j]*mp[i][j]);
}
}
}
}
}
} int main()
{
//freopen("test.in", "r", stdin);
scanf("%d", &t);
for(int tm = ; tm <= t; tm++)
{
scanf("%d%d", &n, &m);
for(int i = ; i < n; i++)
{
for(int j = ; j < m; j++) scanf("%d", &mp[i][j]);
}
Dp();
ans = -;
for(int i = ; i < NN; i++)
{
if(dp[n-][m-][i] != -)
{
int mid = (n+m-)*dp[n-][m-][i]-i*i;
if(ans == -) ans = mid;
else ans = ans < mid ? ans : mid;
}
}
printf("Case #%d: %d\n", tm, ans);
}
return ;
}

hdu 5492 Find a path(dp+少量数学)2015 ACM/ICPC Asia Regional Hefei Online的更多相关文章

  1. 【动态规划】HDU 5492 Find a path (2015 ACM/ICPC Asia Regional Hefei Online)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5492 题目大意: 一个N*M的矩阵,一个人从(1,1)走到(N,M),每次只能向下或向右走.求(N+ ...

  2. HDU 5000 Clone(离散数学+DP)(2014 ACM/ICPC Asia Regional Anshan Online)

    Problem Description After eating food from Chernobyl, DRD got a super power: he could clone himself ...

  3. 【二分】【最长上升子序列】HDU 5489 Removed Interval (2015 ACM/ICPC Asia Regional Hefei Online)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5489 题目大意: 一个N(N<=100000)个数的序列,要从中去掉相邻的L个数(去掉整个区间 ...

  4. 【线段树】HDU 5493 Queue (2015 ACM/ICPC Asia Regional Hefei Online)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5493 题目大意: N个人,每个人有一个唯一的高度h,还有一个排名r,表示它前面或后面比它高的人的个数 ...

  5. 【贪心】【模拟】HDU 5491 The Next (2015 ACM/ICPC Asia Regional Hefei Online)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5491 题目大意: 一个数D(0<=D<231),求比D大的第一个满足:二进制下1个个数在 ...

  6. HDU - 5493 Queue 2015 ACM/ICPC Asia Regional Hefei Online(线段树)

    按身高排序,每个人前面最高的人数有上限,如果超出上限说明impossible, 每次考虑最小的人,把他放在在当前的从左往右第k+1个空位 因为要求字典序最小,所以每次k和(上限-k)取min值. 没有 ...

  7. HDU 5489 Removed Interval 2015 ACM/ICPC Asia Regional Hefei Online (LIS变形)

    定义f[i]表示以i为开头往后的最长上升子序列,d[i]表示以i为结尾的最长上升子序列. 先nlogn算出f[i], 从i-L开始枚举f[i],表示假设i在最终的LIS中,往[0,i-L)里找到满足a ...

  8. HDU - 5491 The Next 2015 ACM/ICPC Asia Regional Hefei Online

    从D+1开始,对于一个数x,区间[x,x+lowbit(x))内的数字的二进制位上1的数量整体来说是单调不减的,因此可快速得出1在这个区间的取值范围. 每次判断一下有没有和[s1,s2]有没有交集,一 ...

  9. (并查集)Travel -- hdu -- 5441(2015 ACM/ICPC Asia Regional Changchun Online )

    http://acm.hdu.edu.cn/showproblem.php?pid=5441 Travel Time Limit: 1500/1000 MS (Java/Others)    Memo ...

随机推荐

  1. Eclipse调试Java的十个技巧

      先提三点 不要使用System.out.println()作为调试工具 启用所有组件的详细的日志记录级别 使用一个日志分析器来阅读日志   1.条件断点 想象一下我们平时如何添加断点,通常的做法是 ...

  2. React状态的含义和用法

    一. 二.代码 <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset=&quo ...

  3. CentOS系统中常用查看日志命令

    cat tail -f 日 志 文 件 说    明 /var/log/message 系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一 /var/log/secure 与安 ...

  4. Java实现图片压缩代码,图片大小转换

    在很多项目中我们会把上传的图片做处理,比较图片上传过多对服务器的容量和带宽有很多的浪费,如果不是必须的高清图片,我们可以通过代码来做压缩.在我的项目中我们压缩图片的目的是让web页面打开的速度很快,并 ...

  5. vim 添加到右键 windows

    >>>> 在windows下 <<<< ++ 在鼠标右键显示“用vim编辑”++ 1.删掉注册表中的HKEY_CLASSES_ROOT\*\shelle ...

  6. Android Touch(2)View.OnTouchEvent与View.OnTouchListener区别

    1,在官方文档 docs/reference/android/view/View.OnTouchListener.html 中对OnTouchListener的描述 Interface definit ...

  7. Android HTTPS(1)概念和简单示例

    Security with HTTPS and SSL The Secure Sockets Layer (SSL)—now technically known as Transport Layer ...

  8. NDK(3)java.lang.UnsatisfiedLinkError: Native method not found解决方法

    调用native方法时报错如下 : “java.lang.UnsatisfiedLinkError: Native method not found....  ”: 原因分析: 链接器只看到了在so中 ...

  9. Open_Newtonsoft_Json 的序列化和反序列化

    Newtonsoft.Json,一款.NET中开源的Json序列化和反序列化类库(下载地址http://json.codeplex.com/). 特别注明:本人转自 陈 晨 博客园的 Newtonso ...

  10. [CF580B]Kefa and Company(滑动窗口)

    题目链接:http://codeforces.com/problemset/problem/580/B 某人有n个朋友,这n个朋友有钱数m和关系s两个属性.问如何选择朋友,使得这些朋友之间s最大差距小 ...