hdu 1559
来源:互联网 发布:access数据库制作软件 编辑:程序博客网 时间:2024/06/14 11:31
一题dp
我们要考虑的是如何求出矩阵的值。dp[i][j]表示从第一行,第一列开始,i行,j列的矩阵和。
那么dp[i][j] = dp[i - 1][j] + dp[i][j - 1] - dp[i-1][j-1] + num[i][j]。我们更新dp数组时,是从上到下,从左到右一个值,一个值更新的。那么我们dp[i - 1][j] 和dp[i][j - 1]都是早已算出,两个矩阵相加减去公共部分,便是除了位置值的其余元素和。
当更新x,y矩阵时,我们依旧依靠上面原理,来求出矩阵值 = dp[i][j] - dp[i -x][j] - dp[i][j - y] + dp[i -x][j -y]。
#include<cstdio>#include<algorithm>#include<iostream>#include<cstring>using namespace std;const int maxn = 1000 + 5;int num[maxn];int dp[maxn][maxn];int main(){ int T; scanf("%d", &T); for(int kase = 1; kase <= T; kase++) { //memset(dp, 0, sizeof(dp)); int m, n, x, y; scanf("%d%d%d%d", &m, &n, &x, &y); int Max = 0; for(int i = 1; i <= m; i++) for(int j = 1; j <= n; j++) { scanf("%d", &dp[i][j]); dp[i][j] += dp[i - 1][j] + dp[i][j - 1] - dp[i - 1][j - 1]; //printf("%d\n", dp[i][j]); if(i >= x && j >= y) { Max = max(Max, dp[i][j] - dp[i - x][j] - dp[i][j - y] + dp[i - x][j - y]); //printf("%d %d %d %d\n", dp[i][j], dp[i - x][y], dp[i][j - y], dp[i -x][j - y]); } } printf("%d\n", Max); } return 0;}
阅读全文
0 0
- HDU 1559
- hdu 1559
- hdu-1559
- HDU 1559
- hdu 1559
- H - H HDU 1559
- hdu
- hdu
- HDU
- hdu ()
- hdu
- hdu
- HDU
- HDU
- hdu
- hdu
- HDU
- Hdu
- JAVA————一门强大的面向对象编程语言
- hibernate增、删、改、查案例
- 捉虫与寻龙:从0打造wordpress插件wp2oc fileshare (1) – 将wp存储后端做进owncloud
- 本地环境:mycat+mybatis+springboot实现demo
- 你可能不知道的提高react编写效率5倍的vscode插件- React/Redux/react-router Snippets
- hdu 1559
- 15 个最好的 Bootstrap 设计工具推荐
- 按照密码加密文件
- python爬虫
- Hibernate注解使用入门
- 分布式开发--分布式定时任务
- mineportal2:基于mailinbox,一个基本功能完备的整合个人件
- ShareSDK 一键分享的集成
- ThinkPad 在win10系统上设置Windows Hello