hdu 5569 ***matrix
来源:互联网 发布:apache启动后立即停止 编辑:程序博客网 时间:2024/05/28 05:13
题意:给定n∗m(n+m为奇数)的矩阵,从(1,1)走到(n,m)且只能往右往下走,设经过的数为a1,a2...a2k,贡献为a1∗a2+a3∗a4+...+a2k-1*a2k,求最小贡献。
想法:简单的dp
代码如下:
#pragma warning(disable:4996)#include<iostream>#include<cstdio>#include<cmath>#include<stack>#include<cstring>#include<sstream>#include<set>#include<string>#include<iterator>#include<vector>#include<map>#include<algorithm>using namespace std;int dp[1010][1010];int matrix[1010][1010];int main(void) { int n, m; while (scanf("%d%d", &n, &m) == 2) { for (int i = 1; i <= n; ++i) for (int j = 1; j <= m; ++j) scanf("%d", &matrix[i][j]); memset(dp, 0, sizeof(dp)); for (int i = 1; i <= n; ++i) for (int j = 1; j <= m; ++j) { if ((i + j) % 2) { if (i == 1) dp[i][j] = dp[i][j - 1] + matrix[i][j] * matrix[i][j - 1]; else if (j == 1) dp[i][j] = dp[i - 1][j] + matrix[i][j] * matrix[i - 1][j]; else dp[i][j] = min(dp[i - 1][j] + matrix[i][j] * matrix[i - 1][j], dp[i][j - 1] + matrix[i][j] * matrix[i][j - 1]); } else { if (i == 1 && j != 1)dp[i][j] = dp[i][j - 1]; else if (i != 1 && j == 1)dp[i][j] = dp[i - 1][j]; else dp[i][j] = min(dp[i - 1][j], dp[i][j - 1]); } } cout << dp[n][m] << endl; }}
0 0
- HDU 5569 matrix
- HDU 5569 matrix(DP)
- hdu 5569 ***matrix
- hdu 5569 matrix(dp)
- hdu-5569-matrix-dp
- hdu 5569 matrix【dp】
- HDU 5569 matrix
- HDU-5569 matrix(DP)
- hdu 5569 matrix (dp)
- hdu 5569 matrix(dp)
- Matrix HDU
- hdu 3376 Matrix again
- hdu 4313 Matrix
- HDU 2119 Matrix
- HDU 2686 Matrix
- hdu 4313 Matrix
- hdu 2686 && 3376 Matrix
- HDU 4313 Matrix
- spring mvc原理分析
- Large scale optimization
- reveal软件配置
- Laravel中运行Gulp任务的利器 —— Laravel Elixir简介及入门教程
- C# 迭代器
- hdu 5569 ***matrix
- 同一局域网内怎样获取新来美眉QQ号码!((*^__^*) 嘻嘻……)
- div p与div>p
- 系统之间数据抽取的解决方案
- Android Studio 删除行的快捷键
- 90后少年每天抓板引围观
- VOIP研究系列1 ------ VOIP(Voice over Internet Protocol) 是什么 ?
- SOA
- js在客户端控制上传图片的大小