模板到不行。。

连更新都没有。。

。存个模板。

理解留到小结的时候再写。

#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <queue>
#include <cmath>
#include <stack>
#include <map> #pragma comment(linker, "/STACK:1024000000");
#define EPS (1e-8)
#define LL long long
#define ULL unsigned long long
#define _LL __int64
#define _INF 0x3f3f3f3f
#define Mod 9999991
#define lowbit(x) (x&(-x)) using namespace std; struct N
{
int Min,Max;
}st[1200][1200]; int num[310][310]; void Init_Y(int s1,int s2,int l,int r,int t,int b)
{ if(t == b)
{
if(l == r)
{
st[s1][s2].Max = num[l][t];
st[s1][s2].Min = num[l][t];
}
else
{ st[s1][s2].Max = max(st[s1<<1][s2].Max,st[s1<<1|1][s2].Max);
st[s1][s2].Min = min(st[s1<<1][s2].Min,st[s1<<1|1][s2].Min);
}
return ;
} int mid = (t+b)>>1; Init_Y(s1,s2<<1,l,r,t,mid);
Init_Y(s1,s2<<1|1,l,r,mid+1,b); st[s1][s2].Max = max(st[s1][s2<<1].Max,st[s1][s2<<1|1].Max);
st[s1][s2].Min = min(st[s1][s2<<1].Min,st[s1][s2<<1|1].Min);
} void Init_X(int s1,int s2,int l,int r,int t,int b)
{
if(l != r)
{
int mid = (l+r)>>1; Init_X(s1<<1,s2,l,mid,t,b);
Init_X(s1<<1|1,s2,mid+1,r,t,b);
} Init_Y(s1,s2,l,r,t,b);
} N Query_Y(int s1,int s2,int L,int R,int T,int B,int l,int r,int t,int b)
{
if(T == t && B == b)
return st[s1][s2]; int mid = (T+B)>>1; if(b <= mid)
return Query_Y(s1,s2<<1,L,R,T,mid,l,r,t,b);
else if(mid < t)
return Query_Y(s1,s2<<1|1,L,R,mid+1,B,l,r,t,b);
N temp,t1,t2; t1 = Query_Y(s1,s2<<1,L,R,T,mid,l,r,t,mid);
t2 = Query_Y(s1,s2<<1|1,L,R,mid+1,B,l,r,mid+1,b); temp.Max = max(t1.Max,t2.Max);
temp.Min = min(t1.Min,t2.Min);
return temp;
} N Query_X(int s1,int s2,int L,int R,int T,int B,int l,int r,int t,int b)
{
if(L == l && R == r)
{
return Query_Y(s1,s2,L,R,T,B,l,r,t,b);
} int mid = (L+R)>>1; if(r <= mid)
return Query_X(s1<<1,s2,L,mid,T,B,l,r,t,b);
else if(mid < l)
return Query_X(s1<<1|1,s2,mid+1,R,T,B,l,r,t,b);
N temp,t1,t2;
t1 = Query_X(s1<<1,s2,L,mid,T,B,l,mid,t,b);
t2 = Query_X(s1<<1|1,s2,mid+1,R,T,B,mid+1,r,t,b);
temp.Max = max(t1.Max,t2.Max);
temp.Min = min(t1.Min,t2.Min);
return temp;
} int main()
{
int n,m,k,b,i,j,x,y; scanf("%d %d %d",&n,&b,&k); for(i = 1;i <= n; ++i)
{
for(j = 1;j <= n; ++j)
{
scanf("%d",&num[i][j]);
}
} Init_X(1,1,1,n,1,n); while(k--)
{
scanf("%d %d",&x,&y); N temp = Query_X(1,1,1,n,1,n,x,min(n,x+b-1),y,min(n,y+b-1)); printf("%d\n",temp.Max-temp.Min);
} return 0;
}

POJ 2019 Cornfields 二维线段树的初始化与最值查询的更多相关文章

  1. poj 2155 matrix 二维线段树 线段树套线段树

    题意 一个$n*n$矩阵,初始全为0,每次翻转一个子矩阵,然后单点查找 题解 任意一种能维护二维平面的数据结构都可以 我这里写的是二维线段树,因为四分树的写法复杂度可能会退化,因此考虑用树套树实现二维 ...

  2. POJ 2155 Matrix (二维线段树入门,成段更新,单点查询 / 二维树状数组,区间更新,单点查询)

    题意: 有一个n*n的矩阵,初始化全部为0.有2中操作: 1.给一个子矩阵,将这个子矩阵里面所有的0变成1,1变成0:2.询问某点的值 方法一:二维线段树 参考链接: http://blog.csdn ...

  3. POJ 2019 Cornfields [二维RMQ]

    题目传送门 Cornfields Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 7963   Accepted: 3822 ...

  4. poj 2155 matrix 二维线段树

    题目链接 区间翻转, 单点查询, 查询操作我真是不太明白...... #include <iostream> #include <vector> #include <cs ...

  5. POJ2029 二维线段树

    Get Many Persimmon Trees POJ - 2029 Seiji Hayashi had been a professor of the Nisshinkan Samurai Sch ...

  6. hdu 4819 二维线段树模板

    /* HDU 4819 Mosaic 题意:查询某个矩形内的最大最小值, 修改矩形内某点的值为该矩形(Mi+MA)/2; 二维线段树模板: 区间最值,单点更新. */ #include<bits ...

  7. poj 2155:Matrix(二维线段树,矩阵取反,好题)

    Matrix Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 17880   Accepted: 6709 Descripti ...

  8. poj 1195:Mobile phones(二维线段树,矩阵求和)

    Mobile phones Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 14391   Accepted: 6685 De ...

  9. POJ 2155 Matrix (二维线段树)

    Matrix Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 17226   Accepted: 6461 Descripti ...

随机推荐

  1. poj3926

    dp+优化 很明显可以用单调队列优化. 记录下自己犯的sb错误:  数组开小,sum没搞清... #include<cstdio> #include<cstring> usin ...

  2. Hardwood Species(map)

    http://poj.org/problem?id=2418 题意:给定一系列字符串,要求按字典序升序输出每个串,并输出每个串出现的百分比. 用map做的,交c++A了,G++ WA..so sad. ...

  3. 安装robotframework-ride

    先安装好python并配置好环境变量 1.Windows+r后输入CMD 安装robotframework框架 2.输入pip install robotframework 安装RIDE前需要安装的依 ...

  4. go之数据类型转换和类型断言

    一.类型转换 1.1 简单类型转换 格式 valueOfTypeB = typeB(valueOfTypeA) int 转 float64 package main import "fmt& ...

  5. POJ 3230 DP

    f[i][j]=max(f[i][j],f[i-1][k]-a[k][j]+b[i][j]) i->第i天 j-–>到第j个城市 #include <cstdio> #incl ...

  6. 每日算法——新型在线LCA

    在线LCA一般大家都会用倍增吧,时间复杂度O(nlogn),空间复杂度O(nlogn),都是非常严格的复杂度限制,并且各种边界处理比较麻烦,有没有更快更好的办法呢? 我们发现,在树链剖分时,我们不经意 ...

  7. [Luogu 2216] [HAOI2007]理想的正方形

    [Luogu 2216] [HAOI2007]理想的正方形 题目描述 有一个a*b的整数组成的矩阵,现请你从中找出一个n*n的正方形区域,使得该区域所有数中的最大值和最小值的差最小. 输入输出格式 输 ...

  8. 【转载】cocos2dx 中 Android NDK 加载动态库的问题

     原文地址:http://blog.csdn.net/sozell/article/details/10551309 cocos2dx 中 Android NDK 加载动态库的问题 闲聊 最近在接入各 ...

  9. ScreenRecord(about C# winform)

    由于一些不得不做的事(哈,有时间再聊),所以就不得不写一个关于录屏的软件了,如此无力的开篇,开始吧. 在网上搜了很多关于录屏的源码,发现都使不了,剧情的需要很难满足.于是突然想到了github上的一个 ...

  10. Linux的那点事

    1.重启nginx服务器 注意,修改了nginx配置文件后最好先检查一下修改过的配置文件是否正确,以免重启后Nginx出现错误影响服务器稳定运行. 判断Nginx配置是否正确命令如下: nginx - ...