题目链接

题目大意:

从一个大正方形数组里面找一个小正方形,满足其中的每个位置上的数都恰好比他的左边的那个和上边的那个大1(如果左边或上边的那个不存在的话就无此要求)。

比如

1 2 3
2 3 4
3 4 5

----------------------------------------------------------------------------------------

维护满足条件的以i,j为右下顶点的最大矩形的两个边长,j方向延长为dp[i][j][0],i方向为dp[i][j][1];

#include <set>
#include <map>
#include <stack>
#include <queue>
#include <cmath>
#include <vector>
#include <string>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm> #define MAX(a,b) ((a)>=(b)?(a):(b))
#define MIN(a,b) ((a)<=(b)?(a):(b))
#define OO 0x0fffffff
using namespace std;
const int N = ;
int data[N][N];
int dp[N][N][]; int main(){
int n;
cin>>n;
for(int i=;i<n;i++) for(int j=;j<n;j++){
cin>>data[i][j];
dp[i][j][] = dp[i][j][] = ;
}
bool flagi,flagj;
for(int i=;i<n;i++) for(int j=;j<n;j++){
if(!(i+j)) continue;
flagi = flagj = false;
if(i){
if(data[i-][j]+==data[i][j]){
dp[i][j][]=dp[i-][j][]+;
flagi = true;
}
}
if(j){
if(data[i][j-]+==data[i][j]){
dp[i][j][]=dp[i][j-][]+;
flagj = true;
}
}
if(flagi&&flagj){
dp[i][j][]=MIN(dp[i][j][],dp[i][j-][]);
dp[i][j][]=MIN(dp[i][j][],dp[i-][j][]);
}
}
int ans = ;
for(int i=;i<n;i++) for(int j=;j<n;j++){
ans = MAX(ans,MIN(dp[i][j][],dp[i][j][]));
}
printf("%d\n",ans);
return ;
}

hiho1469 - 简单dp的更多相关文章

  1. HDU 1087 简单dp,求递增子序列使和最大

    Super Jumping! Jumping! Jumping! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 ...

  2. Codeforces Round #260 (Div. 1) A. Boredom (简单dp)

    题目链接:http://codeforces.com/problemset/problem/455/A 给你n个数,要是其中取一个大小为x的数,那x+1和x-1都不能取了,问你最后取完最大的和是多少. ...

  3. codeforces Gym 100500H A. Potion of Immortality 简单DP

    Problem H. ICPC QuestTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100500/a ...

  4. 简单dp --- HDU1248寒冰王座

    题目链接 这道题也是简单dp里面的一种经典类型,递推式就是dp[i] = min(dp[i-150], dp[i-200], dp[i-350]) 代码如下: #include<iostream ...

  5. poj2385 简单DP

    J - 简单dp Crawling in process... Crawling failed Time Limit:1000MS     Memory Limit:65536KB     64bit ...

  6. hdu1087 简单DP

    I - 简单dp 例题扩展 Crawling in process... Crawling failed Time Limit:1000MS     Memory Limit:32768KB     ...

  7. poj 1157 LITTLE SHOP_简单dp

    题意:给你n种花,m个盆,花盆是有顺序的,每种花只能插一个花盘i,下一种花的只能插i<j的花盘,现在给出价值,求最大价值 简单dp #include <iostream> #incl ...

  8. hdu 2471 简单DP

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2571 简单dp, dp[n][m] +=(  dp[n-1][m],dp[n][m-1],d[i][k ...

  9. Codeforces 41D Pawn 简单dp

    题目链接:点击打开链接 给定n*m 的矩阵 常数k 以下一个n*m的矩阵,每一个位置由 0-9的一个整数表示 问: 从最后一行開始向上走到第一行使得路径上的和 % (k+1) == 0 每一个格子仅仅 ...

随机推荐

  1. [转]数据库事务中的隔离级别和锁+spring Transactional注解

    数据库事务中的隔离级别和锁 数据库事务在后端开发中占非常重要的地位,如何确保数据读取的正确性.安全性也是我们需要研究的问题.ACID首先总结一下数据库事务正确执行的四个要素(ACID): 原子性(At ...

  2. 计算机基础--http的基础整理和巩固

    一.前言 主要包括:1.http基础:TCP/IP,TCP协议,IP协议,DNS协议,URI与URL: 2.http协议:http报文,http方法,http状态码,常见问题 名词解释: (1)HTT ...

  3. sql server 清理数据库日志

    USE [master] GO ALTER DATABASE [数据库名] SET RECOVERY SIMPLE WITH NO_WAIT GO ALTER DATABASE [数据库名] SET ...

  4. 自定义view 之多个引导层动画效果

    SupernatantView 如果我英文还可以的话这个应该叫做漂浮在上层的view---引导层 今天闲来无事看了网上的一些引导层案例总感觉如果不是很舒服,就是类似于很死板的显示和消失 我在想能不能弄 ...

  5. WinDebug使用

    File->Symbol File Path-> SRV*C:\MyLocalSymbols*http://msdl.microsoft.com/download/symbols     ...

  6. ServiceStack.Redis之IRedisClient(转载)

    一.属性 IRedisClient的属性如下: 属性 说明 ConnectTimeout  连接超时 Db 当前数据库的ID或下标 DbSize  当前数据库的 key 的数量 HadExceptio ...

  7. Linux入门学习

    什么是Linux? Linux是一个操作系统软件.和Windows不同的是,Linux是一套开放源代码程序的.并可以自由传播的类Unix操作系统,它是一个支持多用户.多任务.多线程和多CPU的操作系统 ...

  8. 21_HTML&CSS

    今日内容: 1. HTML标签:表单标签​2. CSS: HTML标签:表单标签 * 表单: * 概念:用于采集用户输入的数据的.用于和服务器进行交互. * form:用于定义表单的.可以定义一个范围 ...

  9. 实现js保留小数点后N位的代码

    在JS中,一般实现保留小数点后N位的话,都是利用toFixed函数 <script language="javascript"> document.write(&quo ...

  10. [CTSC1999][网络流24题]家园

    题目:洛谷P2754. 题目大意:有$n$个空间站,$m$个飞船,每个飞船有各自的停靠站点,并且从第一个停靠站点开始,不断循环.每个飞船有不同的容量(-1为月球,0为地球).每个飞船初始停在第一个停靠 ...