题目

二维线段树板子题啊

但是惊讶的发现我不会打标记

毕竟内层是线段树不能\(pushup\)也不能\(pushdown\)

于是考虑一下标记永久化

其实非常显然\(mx_i\)表示区间最大值,\(tag_i\)表示标记

我们修改的时候一路修改最大值,最后打标记

查询的时候一路查\(tag_i\),最后访问一下\(mx_i\)

非常好理解,因为打上标记之后就表示这棵树内部都受这个标记的影响

代码

#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#define LL long long
#define re register
inline int read() {
char c=getchar();int x=0;while(c<'0'||c>'9') c=getchar();
while(c>='0'&&c<='9') x=(x<<3)+(x<<1)+c-48,c=getchar();return x;
}
inline int max(int a,int b) {return (a>b)?a:b;}
int l[3005],r[3005];
int n,m,Q;
void build(int x,int y,int i) {
l[i]=x;r[i]=y;if(x==y) return;
int mid=x+y>>1;
build(x,mid,i<<1),build(mid+1,y,i<<1|1);
}
struct Seg {
int d[3005],tag[3005];
void change(int x,int y,int i,int val) {
d[i]=max(d[i],val);
if(x<=l[i]&&y>=r[i]) {tag[i]=max(tag[i],val);return;}
int mid=l[i]+r[i]>>1;
if(x<=mid) change(x,y,i<<1,val);
if(y>=mid+1) change(x,y,i<<1|1,val);
}
int query(int x,int y,int i) {
if(x<=l[i]&&y>=r[i]) return d[i];
int mid=l[i]+r[i]>>1;int res=tag[i];
if(x<=mid) res=max(res,query(x,y,i<<1));
if(y>=mid+1) res=max(res,query(x,y,i<<1|1));
return res;
}
};
struct Tree {
Seg d[3005],tag[3005];
void change(int x,int y,int l,int r,int i,int val,int xx,int yy) {
d[i].change(xx,yy,1,val);
if(x<=l&&y>=r) {tag[i].change(xx,yy,1,val);return;}
int mid=l+r>>1;
if(x<=mid) change(x,y,l,mid,i<<1,val,xx,yy);
if(y>=mid+1) change(x,y,mid+1,r,i<<1|1,val,xx,yy);
}
int query(int x,int y,int l,int r,int i,int xx,int yy) {
if(x<=l&&y>=r) return d[i].query(xx,yy,1);
int mid=l+r>>1;int res=tag[i].query(xx,yy,1);
if(x<=mid) res=max(res,query(x,y,l,mid,i<<1,xx,yy));
if(y>=mid+1) res=max(res,query(x,y,mid+1,r,i<<1|1,xx,yy));
return res;
}
}T;
int main() {
n=read(),m=read();Q=read();
build(1,m,1);int x,y,s,w,d;
while(Q--) {
d=read(),s=read(),w=read(),x=read()+1,y=read()+1;
int t=T.query(x,x+d-1,1,n,1,y,y+s-1);
T.change(x,x+d-1,1,n,1,t+w,y,y+s-1);
}
printf("%d\n",T.query(1,n,1,n,1,1,m));
return 0;
}

[POI2006]TET-Tetris 3D的更多相关文章

  1. bzoj1513【POI2006】Tet-Tetris 3D

    1513: [POI2006]Tet-Tetris 3D Time Limit: 30 Sec  Memory Limit: 162 MB Submit: 733  Solved: 245 [Subm ...

  2. bzoj 1513 [POI2006]Tet-Tetris 3D(二维线段树)

    1513: [POI2006]Tet-Tetris 3D Time Limit: 30 Sec  Memory Limit: 162 MBSubmit: 540  Solved: 175[Submit ...

  3. 【BZOJ1513】[POI2006]Tet-Tetris 3D 二维线段树

    [BZOJ1513][POI2006]Tet-Tetris 3D Description Task: Tetris 3D "Tetris" 游戏的作者决定做一个新的游戏, 一个三维 ...

  4. bzoj1513: [POI2006]Tet-Tetris 3D

    Description Task: Tetris 3D "Tetris" 游戏的作者决定做一个新的游戏, 一个三维的版本, 在里面很多立方体落在平面板,一个立方体开始落下直到碰上一 ...

  5. BZOJ1513:[POI2006]TET-Tetris 3D(线段树套线段树)

    Description Task: Tetris 3D "Tetris" 游戏的作者决定做一个新的游戏, 一个三维的版本, 在里面很多立方体落在平面板,一个立方体开始落下直到碰上一 ...

  6. 洛谷 P3437 [POI2006]TET-Tetris 3D 解题报告

    P3437 [POI2006]TET-Tetris 3D 题目描述 The authors of the game "Tetris" have decided to make a ...

  7. P3437 [POI2006]TET-Tetris 3D

    题目 P3437 [POI2006]TET-Tetris 3D 做法 一眼就是二维线段树,仔细想想,赋值操作怎么办??\(lazy\)标记放在一维,下一次又来放个标记二维就冲突了 正解:永久化标记 怎 ...

  8. bzoj 1513 POI2006 Tet-Tetris 3D 二维线段树+标记永久化

    1511: [POI2006]OKR-Periods of Words Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 351  Solved: 220[S ...

  9. 【BZOJ】1513: [POI2006]Tet-Tetris 3D

    题意 给\(n(1 \le n \le 20000)\)个立方体\((x, y, z)\),依次落下.求所有立方体落下完了以后最高的高度. 分析 平面求最大值,平面更新最大值. 题解 二维线段树走起, ...

  10. BZOJ 1513 [POI2006]Tet-Tetris 3D

    题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1513 题意:三维空间,有一些立方体在垂直下落.立方体的左下角坐标(x,y)以及长宽 ...

随机推荐

  1. Visual Studio for Mac 安装无响应或者无法连接网络等解决方法

    1.无法连接到网络 2.点击安装和更新无响 这两种情况造成的原因都是由于被墙的原因,第一种情况有部分可以通过fq解决,第二种情况是我遇到过的 反正我全局也失败 这里给出一个我自己用过的解决方案 查看控 ...

  2. Java - 关于泛型

    自Java 1.5开始使用的泛型,泛型给人比较直观的印象是..."尖括号里写了类型我就不用检查类型也不用强转了". 确实,那先从API的使用者的角度上想问题,泛型还有什么意义? D ...

  3. Lua脚本语言基础知识

      注释 在Lua中,你可以使用单行注释和多行注释. 单行注释中,连续两个减号"--"表示注释的开始,一直延续到行末为止.相当于C++语言中的"//". 多行注 ...

  4. Influxdb的存储引擎

    创建Influxdb数据库时,我们可以看到下面选项,每个选项的含义就是本文要描述的: Influxdb内部数据的存储可以使用不同的存储引擎.当前0.8.7版本支持的是LevelDB, RocksDB, ...

  5. 最大子序列和问题--时间复杂度O(NlogN)

    最大子序列和问题--时间复杂度O(NlogN) package a; /* * 最大子序列和问题,时间复杂度O(NlogN) */ public class Sequence { private st ...

  6. SpringMVC_关于<url-pattern>

    一.配置   在没有特殊要求的情况下,SpringMVC的中央调度器DispatcherServlet的<url-oattern/>常使用后缀匹配的方式,如写*do. 二.不能写为/* 这 ...

  7. delphi之读写文件的三种方式

    一.Tstrings.Tstringlist procedure TForm1.Button2Click(Sender: TObject); var strlist: TStringList; pat ...

  8. #if, #elif, #else, #endif 使用

    程序想要通过简单地设置一些参数就生成一个不同的软件,在不同的情况下可能只用到一部分代码,就没必要把所有的代码都写进去,就可以用条件编译,通过预编译指令设置编译条件,在不同的需要时编译不同的代码. (一 ...

  9. 0 test classes found in package in XXXX

    除了参考其他的方法,要注意XXXX位置下是否有空文件夹,删掉.

  10. 用css动画写一个下红包雨的效果

    红包雨的功能相信大家都做过,不过一般都是用js计算的,闲着无聊用css的样式写了类似的,主要用的是css的transform和animation结合.大概代码逻辑: @keyframes startH ...