POJ 1050 二维动态规划转变成枚举加一维的动态规划!

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <queue>
#include <stack>
#include <climits>
#include <cstring>
#include <cmath>
#include <map>
#include <set>

using namespace std;

int n;
int a[105][105];
int dp[105][105];
int sum[105][105];

int main(){
	while(scanf("%d",&n)!=EOF){
		for(int i = 1;i <= n;i++){
			for(int j = 1;j <= n;j++){
				scanf("%d",&a[i][j]);
			}
		}
		memset(dp,0,sizeof(dp));

		for(int j = 1;j <= n;j++){ // j列的前缀和
			for(int i = 1;i <= n;i++){
				sum[j][i] = sum[j][i-1] + a[i][j];
			}
		}
		for(int i = 1;i <= n;i++){
			for(int j = i;j <= n;j++){
				int right = 0;
				for(int k = 1;k <= n;k++){
					 if(right >= 0){
					 	right += sum[k][j] - sum[k][i-1];
					 }
					 else{
					 	right = sum[k][j] - sum[k][i-1];
					 }

					 dp[i][j] = max(dp[i][j],right);

				}
			}
		}
		int ans = -INT_MAX;
		for(int i = 1;i <= n;i++){
			for(int j = i;j <= n;j++){
				if(dp[i][j] > ans){
					ans = dp[i][j];
				}
			}
		}
		cout << ans << endl;
	}
	return 0;
}

时间: 2024-10-07 18:45:56

POJ 1050 二维动态规划转变成枚举加一维的动态规划!的相关文章

完美解决Android使用Zxing扫描二维码改成竖屏后,后面的预览画面出现了拉伸,扭曲的情况

完美解决解决Android使用Zxing扫描二维码改成竖屏后,后面的预览画面出现了拉伸,扭曲的情况 第一步:找到com.zxing.camera包下的CameraConfigurationManager.java文件中的void initFromCameraParameters(Camera camera)方法 第二步:在 Log.d(TAG, "Screen resolution: " + screenResolution);后加上如下的代码 Point screenResoluti

POJ 2155 二维线段树

POJ 2155  二维线段树 思路:二维线段树就是每个节点套一棵线段树的树. 刚开始因为题目是求A[I,J],然后在y查询那直接ans^=Map[i][j]的时候没看懂,后面自己把图画出来了才理解. 因为只有0和1,所以可以用异或来搞,而不需要每次都需要修改. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<map> #incl

POJ 2155 二维线段树 经典的记录所有修改再统一遍历 单点查询

本来是想找一个二维线段树涉及懒惰标记的,一看这个题,区间修改,单点查询,以为是懒惰标记,敲到一半发现这二维线段树就不适合懒惰标记,你更新了某段的某列,但其实其他段的相应列也要打标记,但因为区间不一样,又不好打...也可能是我这是在套用一维线段树的思想,还有更好的二维线段树懒惰标记方法 反正到现在我还没搞定二维线段树的懒惰标记,因为这道题不用懒惰标记,因为是二进制序列,区间修改仅限于翻转操作,那就只要记录每次操作,最后查询的时候从上往下把所有修改都来上一遍,就可以了.就类似于树状数组的第二种用法,

poj 2155 二维树状数组

http://poj.org/problem?id=2155 Matrix Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 17721   Accepted: 6653 Description Given an N*N matrix A, whose elements are either 0 or 1. A[i, j] means the number in the i-th row and j-th column. I

POJ 2185 二维KMP

题意:就是让你求出最小的字符矩阵面积,这个矩阵是这个大矩阵里能够循环的,但是并不一定是全部循环相同的,部分相同也算循环,比如样例. 思路:这题挺好的,以前没有想到二维字符串数组也可以用next数组求出其循环节,现在这题正好补了这个空. 解法:把每一个字符串当做字符进行求next数组,然后求出最小的循环字符串长度,即:len-next[len].因为以前求循环节是len/(len-next[len]),括号里面的不就是最小的循环长度嘛! 因为要求这个循环矩阵的长和宽,所以长就是每一行作为一个字符串

poj 1195 二维树状数组 及二维树状数组模板

http://poj.org/problem?id=1195 求矩阵和的时候,下标弄错WA了一次... 求矩形(x1,y1) (x2,y2)的sum |sum=sum(x2,y2)-sum(x1-1,y2)-sum(x2,y1-1)+sum(x1-1,y1-1) 二维树状数组讲解:http://blog.csdn.net/u011026968/article/details/38532117 二维树状数组模板: /*========================================

C# 二维数组 转换成 DataTable

C# 数据转换 Overview C# 窗体操作中,有些比较特别的操作.但是为了方便我们不得不使用一些比较特别的手段. C#中二维数组转DataTable 首先,我们看一下我对二维数组的数据处理.这次我是将Excel表格中的数据,读成二维数组的格式的.看一下代码: 从Excel中读取数据并转换成二维数组 string FileNmae = System.IO.Directory.GetCurrentDirectory(); Excel.Application Excel_Reader = new

抓取二维数组某值出来,到一维数组

/*** * '抓取二维数组某值出来,到一维数组' * @param $arr * @param $item * @return array */ function get_arr_item_val($arr,$item){ if (!$arr){ return []; } $res = []; foreach ($arr as $v){ $res[] = $v[$item]; } return $res; } 原文地址:https://www.cnblogs.com/pansidong/p/1

批量生成二维码打包成exe文件

需求:  根据url 和 文件名称 生成二维码   将二维码放到背景图上合成一张二维码 思路: 使用qrcode库 获取二维码 保存本地  全部完成后 与本地背景图合成   最后使用pyinstaller将python打包成exe文件 # -*- coding: utf-8 -*- import urllib; import os import time import threadpool from PIL import Image import qrcode path = os.getcwd(