博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 5492 (暴力+nice)
阅读量:6611 次
发布时间:2019-06-24

本文共 1182 字,大约阅读时间需要 3 分钟。

题意:在矩阵中,找一条路从 (1,1)->(n,m),使方差最小

思路: T = (N+M1)N+M1i=1(AiAavg)2

将N + M - 1乘进去,即求1 ~ N+M-1,(N + M - 1)*A[i] - (A[i] + ..... + A[N]) 的和由于

假设Aavg可以是任何数,但只有当其是平均值时T才会最小(感觉别人都好厉害 /(ㄒoㄒ)/~~)

 

#include 
#include
#include
#include
#include
#include
#include
typedef long long ll;using namespace std;int a[35][35],f[35][35];int n,m;int fin(int x){ int N = n+m-1; for(int i = 1; i <= n; i++) for(int j = 1; j <= m; j++) { if(i == 1 && j == 1) f[i][j] = (N*a[i][j]-x)*(N*a[i][j] - x); else if(i == 1) f[i][j] = f[i][j-1] + (N*a[i][j]-x)*(N*a[i][j] - x); else if(j == 1) f[i][j] = f[i-1][j] + (N*a[i][j]-x)*(N*a[i][j] - x); else f[i][j] = min(f[i-1][j],f[i][j-1]) + (N*a[i][j]-x)*(N*a[i][j] - x); } return f[n][m]/N;}int main(){ int T; scanf("%d",&T); for(int i = 1; i <= T; i++) { scanf("%d%d",&n,&m); for(int k = 1; k <= n; k++) for(int j = 1; j <= m; j++) { scanf("%d",&a[k][j]); } int ans = 10000000; for(int k = 1; k <= 2000; k++) { ans = min(ans,fin(k)); } printf("Case #%d: %d\n",i,ans); }}

  

ps.我们需要的仅仅是不停找借口让自己坚持下去

 

转载于:https://www.cnblogs.com/Przz/p/5409742.html

你可能感兴趣的文章
DataTable转换成json字符串
查看>>
【DM642】ICELL Interface—Cells as Algorithm Containers
查看>>
svs 在创建的时候 上传文件夹 bin obj 这些不要提交
查看>>
Tinkphp
查看>>
temporary Object and destructor
查看>>
xcode - 移动手势
查看>>
细说浏览器特性检测(1)-jQuery1.4添加部分
查看>>
Java基础-算术运算符(Arithmetic Operators)
查看>>
C#编程(四十七)----------集合接口和类型
查看>>
【转】关于大型网站技术演进的思考(十二)--网站静态化处理—缓存(4)
查看>>
积跬步,聚小流------Bootstrap学习记录(1)
查看>>
HDUPhysical Examination(贪心)
查看>>
苹果公司的产品已用完后门与微软垄断,要检查起来,打架!
查看>>
Android官方架构组件LiveData: 观察者模式领域二三事
查看>>
你必须知道的HTTP基本概念
查看>>
Android ContentProvider调用报错"Bad call:..."及相关Binder权限问题分析
查看>>
基本shell脚本的编辑及变量
查看>>
加密和解密 tar
查看>>
将datatable 保存为 Excel文件(高效率版本)
查看>>
C/C++五大内存分区(转)
查看>>