UVA - 11297 Census (树套树/四叉树)
题目链接 二维平面RMQ问题,单点修改,区间询问最大最小值 树套树或者四叉树均可做 树套树版本: 1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 const int N=500+10,mod=1e9+7,inf=0x3f3f3f3f; 5 int n,Q,a[N][N]; 6 struct D {int mx,mi;} tr[N<<2][N<<2]; 7 D operator+(const D& a,const D& b) {return {max(a.mx,b.mx),min(a.mi,b.mi)};} 8 #define ls(u) (u<<1) 9 #define rs(u) (u<<1|1) 10 #define mid ((l+r)>>1) 11 void pu(int U,int u) {tr[U][u]=tr[U][ls(u)]+tr[U][rs(u)];} 12 D qry2(int U,int y1,int y2,int u=1,int l=1,int r=n) { 13 if(l>=y1&&r<=y2)return tr[U][u]; 14 if(l>y2||r<y1)return {~inf,inf}; 15 return qry2(U,y1,y2,ls(u)