[POI2006]TET-Tetris 3D
二维线段树板子题啊
但是惊讶的发现我不会打标记
毕竟内层是线段树不能\(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的更多相关文章
- bzoj1513【POI2006】Tet-Tetris 3D
1513: [POI2006]Tet-Tetris 3D Time Limit: 30 Sec Memory Limit: 162 MB Submit: 733 Solved: 245 [Subm ...
- bzoj 1513 [POI2006]Tet-Tetris 3D(二维线段树)
1513: [POI2006]Tet-Tetris 3D Time Limit: 30 Sec Memory Limit: 162 MBSubmit: 540 Solved: 175[Submit ...
- 【BZOJ1513】[POI2006]Tet-Tetris 3D 二维线段树
[BZOJ1513][POI2006]Tet-Tetris 3D Description Task: Tetris 3D "Tetris" 游戏的作者决定做一个新的游戏, 一个三维 ...
- bzoj1513: [POI2006]Tet-Tetris 3D
Description Task: Tetris 3D "Tetris" 游戏的作者决定做一个新的游戏, 一个三维的版本, 在里面很多立方体落在平面板,一个立方体开始落下直到碰上一 ...
- BZOJ1513:[POI2006]TET-Tetris 3D(线段树套线段树)
Description Task: Tetris 3D "Tetris" 游戏的作者决定做一个新的游戏, 一个三维的版本, 在里面很多立方体落在平面板,一个立方体开始落下直到碰上一 ...
- 洛谷 P3437 [POI2006]TET-Tetris 3D 解题报告
P3437 [POI2006]TET-Tetris 3D 题目描述 The authors of the game "Tetris" have decided to make a ...
- P3437 [POI2006]TET-Tetris 3D
题目 P3437 [POI2006]TET-Tetris 3D 做法 一眼就是二维线段树,仔细想想,赋值操作怎么办??\(lazy\)标记放在一维,下一次又来放个标记二维就冲突了 正解:永久化标记 怎 ...
- bzoj 1513 POI2006 Tet-Tetris 3D 二维线段树+标记永久化
1511: [POI2006]OKR-Periods of Words Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 351 Solved: 220[S ...
- 【BZOJ】1513: [POI2006]Tet-Tetris 3D
题意 给\(n(1 \le n \le 20000)\)个立方体\((x, y, z)\),依次落下.求所有立方体落下完了以后最高的高度. 分析 平面求最大值,平面更新最大值. 题解 二维线段树走起, ...
- BZOJ 1513 [POI2006]Tet-Tetris 3D
题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1513 题意:三维空间,有一些立方体在垂直下落.立方体的左下角坐标(x,y)以及长宽 ...
随机推荐
- 屏蔽F1~F12的快捷键的js函数
function window.onhelp(){return false} //屏蔽F1帮助 /*keyCod从113-123分别禁用了F2-F12键,13禁用了回车键(Enter),8禁用了退格键 ...
- WPF: RenderTransform特效
WPF中的变形(RenderTransform)类是为了达到直接去改变某个Silverlight对象的形状(比如缩放.旋转一个元素)的目的而设计的,RenderTransform包含的变形属性成员就是 ...
- django中的验证码
from django.shortcuts import renderfrom PIL import Imagefrom PIL import ImageDrawfrom PIL import Ima ...
- IO流实现模拟软件试用的功能
import java.io.*; public class TryOut { /** * IO流模拟软件试用次数的功能 * 这里注意try里BufferedOutputStream不要和InputS ...
- SpringMVC学习笔记:SpringMVC框架的执行流程
一.MVC设计模式 二.SpringMVC框架介绍 三.SpringMVC环境搭建 四.SpringMVC框架的请求处理流程及体系结构
- 关于springmvc中常用的注解,自己也整理一下
1.@Controller 在springMVC中@controller主要用在控制层的类上,之前只知道用注解开发的时候必须加一个@controller ,今天看了别的大佬整理的才知道为什么这么用,控 ...
- 闲谈:乌云上那些 web-based 的 QQ 漏洞
0×00 起始 昨日凌晨,看到爱尖刀团队发布了一条“腾讯客户端XSS,已第一时间提交至TSRC”的微博,心想,腾讯又出此类漏洞了.今日,由于有一位名叫“阿布”的同学将该漏洞发布到了乌云,引来不少争吵甚 ...
- 用WebStorm开发TypeScript
为什么是TypeScript 最近在做H5的游戏,最终选定的TypeScript作为开发语言.主要是看重他有强类型和Class,作为习惯使用AS3,Java等强类型编程的人来说,还是习惯这种编程写法. ...
- 移动前端调试页面–weinre
安装 npm install -g weinre 启动 weinre --boundHost -all- 浏览器查看 http://localhost:8080 插入相关文件 index.html d ...
- Spring MVC基本配置和实现(三)
Item public class Item { private Integer id; private String name; public Integer getId() { return id ...