题目

二维线段树板子题啊

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

毕竟内层是线段树不能\(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. Docker学习(三): Dockerfile指令介绍

    特别声明: 博文主要是学习过程中的知识整理,以便之后的查阅回顾.部分内容来源于网络(如有摘录未标注请指出).内容如有差错,也欢迎指正! =============系列文章============= 1 ...

  2. mysql:名次排名 (并列与不并列)

    http://www.cnblogs.com/zengguowang/p/5541431.html sql语句查询排名 思路:有点类似循环里面的自增一样,设置一个变量并赋予初始值,循环一次自增加1,从 ...

  3. js实现队列结构

    创建队列 let items function Queue { this.enqueue = function(element){ items.push(element) } this.dequeue ...

  4. js中获取css样式的两种方式

    1. 对象.style.样式名  弊端就是只能获取行内样式 2.window.getComputedStyle(对象,null); 最好用第二种方式 <!DOCTYPE html> < ...

  5. js delete 操作符

    delete操作符很陌生,很少会用到,但是既然碰到了,就mark一下: delete 操作符用于删除一个对象的属性: 注意点:只能删除自己的属性,从原型链上继承的属性是无法删除的:

  6. windows查看当前python的版本

    1.Ctrl+R打开控制台 输入python之后回车

  7. js图片跟随鼠标移动

    <div id="wrapper"><img src="http://images.cnblogs.com/cnblogs_com/rain-null/ ...

  8. 转:问题解决:The project cannot be built until build path errors are resolved

    转自:http://blog.csdn.net/marty_zhu/article/details/2566299 今天在eclipse里遇到这个问题,之前也遇到过,不过,通过clean一下项目,或者 ...

  9. LaTeX 使用:itemize,enumerate,description 用法

    itemize和enumerate还有description 是LaTeX里列举的三种样式,分别讲一些使用技巧.itemize(意为分条目): \begin{itemize} \item[*] a \ ...

  10. 经典的 div + css 鼠标 hover 下拉菜单

    经典的 div + css 鼠标 hover 下拉菜单 效果图: 源码: <html> <head> <meta charset="utf-8"> ...