POJ2019 Cornfields(记忆化枚举版)

原创 2016年06月01日 15:17:51

题目:

Description
给出一个N*N (N<=250)的方阵,以及K(<=100000)个询问。每次询问如下:以(Xi,Yi)为左上角,边长为B的子方阵中,最大值和最小值的差是多少?
注意对于所有的询问,B都是一个定值。
Input
第一行N,B(<=N),K。含义如上。
接下来N行N列的一个矩阵,每个数<=250。
接下来K行表示询问,每行两个数Xi, Yi 表示询问的方阵的左上角
Output
一行一个正整数,含义如上。

提起这道题大家想到的一定是二维RMQ,今天我来说一种新型思路记忆化枚举:

# include<stdio.h>
# include<stdlib.h>
int a[1000][1000],c[1000][1000];
int main(){
    int i,j,n,b,k,max=0,min=1000000,x,y,l;
    scanf("%d%d%d",&n,&b,&k);//输入
    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
            scanf("%d",&a[i][j]);
    for(l=1;l<=k;l++){
        max=0;
        min=1000000000;//记得要定大点
        scanf("%d%d",&x,&y);
        if(!c[x][y]){//如果没有枚举过则枚举
            for(i=1;i<=b;i++)//枚举
                for(j=1;j<=b;j++){
                    if(a[i+x-1][j+y-1]<min)min=a[i+x-1][j+y-1];
                     if(a[i+x-1][j+y-1]>max)max=a[i+x-1][j+y-1];
                }
            c[x][y]=max-min;//记下每一次的答案
        }
            printf("%d\n",c[x][y]);//输出答案
    }
    return 0;
} 

ps.这个方法只要400毫秒。

版权声明:本文为博主原创文章,未经博主允许不得转载。

poj2019 Cornfields

二维RMQ 单调队列
  • AaronGZK
  • AaronGZK
  • 2015年11月14日 21:04
  • 619

poj2019 Cornfields RMQ

给出一个N*N (N
  • qq_33132383
  • qq_33132383
  • 2017年04月04日 21:46
  • 86

POJ2019 Cornfields 二维RMQ问题

二维RMQ问题 题意是输入
  • AC_Gibson
  • AC_Gibson
  • 2014年09月25日 11:44
  • 341

POJ 2019 Cornfields 【二维线段树】

题目链接:POJ 2019 Cornfields Cornfields Time Limit: 1000MS Memory Limit: 30000K Total Submission...
  • chenzhenyu123456
  • chenzhenyu123456
  • 2016年04月01日 10:47
  • 260

poj2019

#include int a[250][250]; int main(){ int n,b,k,row,col,max,min; scanf("%d%d%d",&n,&b,&k); for(int i...
  • u011731233
  • u011731233
  • 2014年04月02日 18:20
  • 436

hdu2018 (递归,记忆化递归)

很水的题,但好歹带我入门了一点动态规划?不,是递归。都没推出递推关系啦,可惜题目的数据太水啦,递归和保存已有的再递归 时间都看不出来差别。。。。。纯递归,怎么理解了:就是 你想啊 每下一刻奶牛的数量等...
  • yexiaohhjk
  • yexiaohhjk
  • 2015年07月17日 16:16
  • 1833

带记忆化搜索的斐波那契数列

带记忆化搜索的斐波那契数列//通过dp数组保留部分结果,动态规划避免大量重复性操作#include #include #include using namespace std; const in...
  • yinghuoai
  • yinghuoai
  • 2017年11月20日 08:46
  • 161

动态规划、记忆化搜索、Dijkstra算法的总结

动态规划        动态规划算法通常用于求解具有某种最优性质的问题。在这类问题中,可能会有许多可行解。每一个解都对应于一个值,我们希望找到具有最优值的解。动态规划算法与分治法类似,其基本思想也是...
  • Lieacui
  • Lieacui
  • 2016年06月24日 10:34
  • 2892

LeetCode-22-Generate-Parentheses 记忆化搜索,Python类变量,set强转list

用递归的记忆化搜索枚举出n组括号的情况 class Solution(object): dp=[] def generateParenthesis(self, n): ...
  • qdbszsj
  • qdbszsj
  • 2017年09月10日 21:59
  • 156

[Wikioi 2618]核电站问题---DP解法与记忆化DFS解法

题目描述 Description 一个核电站有N个放核物质的坑,坑排列在一条直线上。如果连续M个坑中放入核物质,则会发生爆炸,于是,在某些坑中可能不放核物质。 任务:对于给定的N和M,求...
  • qpswwww
  • qpswwww
  • 2014年05月26日 17:07
  • 868
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:POJ2019 Cornfields(记忆化枚举版)
举报原因:
原因补充:

(最多只允许输入30个字)