hdu5492(递推+数学)
来源:互联网 发布:淘宝网运动鞋女 编辑:程序博客网 时间:2024/05/09 00:47
链接:点击打开链接
题意:给出一个n*m的矩阵,每个点上有权值,求(N+M−1)∑N+M−1i=1(Ai−Aavg)2的最小值
代码:
#include <stdio.h>#include <iostream>#include <stdlib.h>#include <string.h>#include <algorithm>using namespace std;const int INF=0x3f3f3f3f;int a[35][35],dp[35][35][2005]; //可以把结果*(n+m-1)²就变成了方差int main(){ //又因为D(X)=E(x²)-[E(X)]² int t,n,m,i,j,k,ans,cas; //dp[i][j][k]表示走到(i,j)和是k时,平方和最小是多少 scanf("%d",&t); for(cas=1;cas<=t;cas++){ scanf("%d%d",&n,&m); for(i=1;i<=n;i++) for(j=1;j<=m;j++) scanf("%d",&a[i][j]); memset(dp,INF,sizeof(dp)); dp[1][1][a[1][1]]=a[1][1]*a[1][1]; for(i=1;i<=n;i++){ for(j=1;j<=m;j++){ for(k=0;k<=2000;k++) //因为每个格时非负数,所以不能从n+m-1开始推 if(dp[i][j][k]!=INF){ if(i+1<=n) dp[i+1][j][k+a[i+1][j]]=min(dp[i+1][j][k+a[i+1][j]],dp[i][j][k]+a[i+1][j]*a[i+1][j]); if(j+1<=m) dp[i][j+1][k+a[i][j+1]]=min(dp[i][j+1][k+a[i][j+1]],dp[i][j][k]+a[i][j+1]*a[i][j+1]); } } } ans=INF; for(i=0;i<=2000;i++) if(dp[n][m][i]!=INF) ans=min(ans,(n+m-1)*dp[n][m][i]-i*i); printf("Case #%d: %d\n",cas,ans); } return 0;}
0 0
- hdu5492(递推+数学)
- HDU5492 十分数学的DP
- HRBUST1589(数学递推)
- Hduoj2501【数学递推】
- 递推 数学
- A1 = ?+数学递推
- hdu1292 组合数学+递推
- bzoj3997 组合数学 递推
- POJ1019 数学+递推乱搞
- HDU6143 组合数学 递推
- SOJ-2857(数学递推公式)
- 【数学 递推】 HDU 1143 Tri Tiling
- hdu1143 Tri Tiling(数学:递推)
- UVA 10609 数学 几何 递推
- HLJUOJ1128 && HDU2046(数学递推)
- UVa 11401 Triangle Counting(数学递推)
- 汉诺塔III 2064 (递推+数学)
- 汉诺塔IV (递推+数学)
- SLIC超像素分割详解(一):简介
- maven-jetty-plugin 自动重启问题
- 线程加入,休眠,中断,礼让操作
- CentOS7 安装 zookeeper
- okhttp用法
- hdu5492(递推+数学)
- Spring Validation(使用Hibernate Validator)
- 递归算法的优化思路和CPS
- iframe加载顺序导致数据访问出现问题
- leetcode : jumpgame
- MAC地址和IP地址
- TYVJ1415 差分约束
- TPL——开始一个Task
- nodejs操作MSSQL两种方式--笔记