题目

P3437 [POI2006]TET-Tetris 3D

做法

一眼就是二维线段树,仔细想想,赋值操作怎么办??\(lazy\)标记放在一维,下一次又来放个标记二维就冲突了

正解:永久化标记

怎么办不会啊??看了十分钟代码才懂:

区间修改:经过的路径在最大值维护里修改,到了修改的区间把这个懒惰标记放在这里就不动了,不下传(在这个标记里面改)

然后查询的时候到的路径都要查询一遍标记

讲一下一维修改的时候不能写成赋值操作:\(tag[now]=max(tag[now],val);\)

因为我们最大值和懒惰标记都在这里改,对于最大值那里面这维得写成赋值,想想就懂了吧?

也就是说我们其实要写两个区间修改的,为了减少码量这样写

My complete code

#include<cstdio>
#include<cstring>
#include<string>
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
typedef int LL;
const LL maxn=1009;
inline LL Read(){
LL x(0),f(1);char c=getchar();
while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
while(c>='0'&&c<='9')x=(x<<3)+(x<<1)+c-'0',c=getchar();
return x*f;
}
LL n,m,q;
struct node1{
LL tag[maxn<<2],mx[maxn<<2];
LL Query(LL now,LL l,LL r,LL lt,LL rt){
if(lt<=l&&rt>=r) return mx[now];
LL ret(tag[now]),mid(l+r>>1);
if(lt<=mid) ret=max(ret,Query(now<<1,l,mid,lt,rt));
if(rt>mid) ret=max(ret,Query(now<<1|1,mid+1,r,lt,rt));
return ret;
}
void Change(LL now,LL l,LL r,LL lt,LL rt,LL val){
mx[now]=max(mx[now],val);
if(lt<=l&&rt>=r){tag[now]=max(tag[now],val); return;}
LL mid(l+r>>1);
if(lt<=mid) Change(now<<1,l,mid,lt,rt,val);
if(rt>mid) Change(now<<1|1,mid+1,r,lt,rt,val);
}
};
struct node2{
node1 tag[maxn<<2],mx[maxn<<2];
LL Query(LL now,LL l,LL r,LL lt,LL rt,LL lh,LL rh){
if(lt<=l&&rt>=r) return mx[now].Query(1,1,m,lh,rh);
LL ret(tag[now].Query(1,1,m,lh,rh)),mid(l+r>>1);
if(lt<=mid) ret=max(ret,Query(now<<1,l,mid,lt,rt,lh,rh));
if(rt>mid) ret=max(ret,Query(now<<1|1,mid+1,r,lt,rt,lh,rh));
return ret;
}
void Change(LL now,LL l,LL r,LL lt,LL rt,LL lh,LL rh,LL val){
mx[now].Change(1,1,m,lh,rh,val);
if(lt<=l&&rt>=r){tag[now].Change(1,1,m,lh,rh,val);return;}
LL mid(l+r>>1);
if(lt<=mid) Change(now<<1,l,mid,lt,rt,lh,rh,val);
if(rt>mid) Change(now<<1|1,mid+1,r,lt,rt,lh,rh,val);
}
}T;
int main(){
n=Read(),m=Read(),q=Read();
while(q--){
LL d(Read()),s(Read()),val(Read()),x(Read()+1),y(Read()+1);
val+=T.Query(1,1,n,x,x+d-1,y,y+s-1);
T.Change(1,1,n,x,x+d-1,y,y+s-1,val);
}
printf("%d\n",T.Query(1,1,n,1,n,1,m));
return 0;
}

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

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

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

  2. bzoj1513【POI2006】Tet-Tetris 3D

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

  3. 洛谷P3437 [POI2006]TET-Tetris 3D(二维线段树 标记永久化)

    题意 题目链接 Sol 二维线段树空间复杂度是多少啊qwqqq 为啥这题全网空间都是\(n^2\)还有人硬要说是\(nlog^2n\)呀.. 对于这题来说,因为有修改操作,我们需要在外层线段树上也打标 ...

  4. 洛谷 P3437 [POI2006]TET-Tetris 3D

    二维线段树区间更新啊 树套树的外层树,如果是线段树的话一般似乎不能打标记?(毕竟标记不好下传) 然而起码对于这题是可以的...对于外层线段树,每个节点放两个内层线段树dat和setv,分别是得到的值和 ...

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

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

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

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

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

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

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

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

  9. NOIp2018停课刷题记录

    Preface 老叶说了高中停课但是初中不停的消息后我就为争取民主献出一份力量 其实就是和老师申请了下让我们HW的三个人听课结果真停了 那么还是珍惜这次机会好好提升下自己吧不然就\(AFO\)了 Li ...

随机推荐

  1. Eclipse 工作空间(Workspace)

    Eclipse 工作空间(Workspace) eclipse 工作空间包含以下资源: 项目 文件 文件夹 项目启动时一般可以设置工作空间,你可以将其设置为默认工作空间,下次启动后无需再配置: 工作空 ...

  2. 嵌入式开发之davinci--- 8168 总的roi 编码

    http://bbs.61dsp.com/forum.php?mod=viewthread&tid=767

  3. Chromium中多线程及并发技术要点(C/C++)

    类别 类 说明 演示样例 线程机制 Thread (參考:线程模型及应用指南)   MessagePump   MessageQueue   SequencedWorkerPool 它是一个线程池,用 ...

  4. ios -将navigationbar的translucent属性设为No后,子控制器视图整体下移问题

    如果不将navigationbar.translucent = YES 会觉得颜色很浅,因为这是半透明状态 若navigationbar.translucent = NO,颜色问题解决,但是子控制器视 ...

  5. MYSQL存储引擎介绍--应用场景

    MySQL存储引擎通常有哪3种?各自分别有什么特点?应用场景是哪些? MySQL5.5以后默认使用InnoDB存储引擎,其中InnoDB和BDB提供事务安全表,其它存储引擎都是非事务安全表.若要修改默 ...

  6. 巨蟒django之权限9:前端展示修改删除合并&&权限展示

    1.权限组件控制流程(硬核重点) 2.权限组件控制流程 3.角色管理 4.删除合并 5.权限展示

  7. phpwind 论坛 转移

    前段时间用phpwind 搭建了一个本地论坛系统,也写过一篇随笔,讲phpwind论坛的迁移,昨天网上又对论坛做了迁移,在本地搭建了系统. 使用的是之前没有成功的方法.这种方法挺方便的,之前每次都是重 ...

  8. jquery拓展插件-popup弹窗

    css:<style> /* 公共弹出层 */ .popWrap{position: fixed;left: 0;top: 0; width: 100%;height: 100%;z-in ...

  9. 使用QFuture类监控异步计算的结果

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/Amnes1a/article/details/65630701在Qt中,为我们提供了好几种使用线程的 ...

  10. element-UI ,Table组件实现拖拽效果

    拖拽效果,先放效果图,步骤放在后面~~ 一.引入三方插件 1.引入sortable.js的包: npm install sortable.js --save 2.或者npm i -S vuedragg ...