题目

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;
}

转载于:https://www.cnblogs.com/y2823774827y/p/10341982.html

P3437 [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. 【题解】[POI2006」Tet-Tetris 3D

    sol: 考虑用树套树维护二维信息. 这里标记比较复杂,所以不好下传,考虑 标记永久化. 每次修改区间的时候,把遍历到的点都修改 mx ,对于完全覆盖的区间则同时修改 tag 和 mx .(这里的修改 ...

  3. 分享21个丰富多彩的 HTML5 小游戏

    作为下一代的网页语言,HTML5 拥有很多让人期待已久的新特性.HTML5 的优势之一在于能够实现跨平台游戏编码移植,现在已经有很多公司在移动设备上使用 HTML5 技术.随着 HTML5 跨平台支持 ...

  4. 【ybt金牌导航4-7-3】【luogu P3437】三维俄罗斯方块/TET-Tetris 3D

    三维俄罗斯方块/TET-Tetris 3D 题目链接:ybt金牌导航4-7-3 / luogu P3437 题目大意 要你支持区间求最大,并把这个区间的所有点高度改为你求得的最大值加一个值. 最后要你 ...

  5. 【POI 2007】Tetris Attack 正方体大作战(tet)

    http://www.zybbs.org/JudgeOnline/problem.php?id=1106 http://main.edu.pl/en/archive/oi/14/tet 题目大意:诶呀 ...

  6. BZOJ 1513 [POI2006]Tet-Tetris 3D 二维线段树

    题意: d*s的平面上,掉落n个方块. 每个方块会掉落在地上或者另一个方块上. 现给定每个方块的长宽高以及掉落位置. 求解最后能摞多高 (牛顿死的早) 解析: 显然h[i]=max(h[j])+w[i ...

  7. [POI2006] TET-Tetris 3D

    题目描述: 写一个数据结构,支持查询一个矩形的最大值 并将这个矩形的值全部变为 这个最大值加一个常数 题目分析: 二维线段树+标记永久化 maxi表示子树内的一个最大值,tag表示子树全部都被覆盖的值 ...

  8. 读论文:(nvdiffrec) Extracting Triangular 3D Models, Materials, and Lighting From Images

    Project page: https://nvlabs.github.io/nvdiffrec/ github项目名称叫 nvdiffrec 整体看起来跟nurf一样是对单个物体(单个场景)训练的. ...

  9. 俄罗斯方块(Tetris)

    <俄罗斯方块>(Tetris, 俄文:Тетрис)是一款由俄罗斯人阿列克谢·帕基特诺夫于1984年6月发明的休闲游戏. 我将其作为我课程设计的题目,重温程序设计的基础.由于课设时间有限, ...

最新文章

  1. 社工库365开网站公开售卖盗取的账号信息
  2. php正则重复匹配,php – 用于匹配任何长度的所有重复子串的正则表达式
  3. ibatise 没有大于等于吗_库里+杜兰特并没有大于等于2!或许他和库里搭配将更强...
  4. python窗体应用程序无阻塞_当GUI应用程序运行时,imshow阻塞线程
  5. 浅议“全局变量”、“多线程”和“编译器陷阱”
  6. 面试感悟----一名3年工作经验的程序员应该具备的技能--读后感
  7. t60整了个vista!!感觉不错!
  8. 华为主题包hwt下载_hwtTool下载-华为主题开发工具下载 v9.0.2.301 官方版[百度网盘资源] - 安下载...
  9. 再生核希尔伯特空间(RKHS)和核函数
  10. matplotlib绘制圆饼图
  11. QQ隐藏福利二-----------------那些免费的挂件和气泡
  12. prosody相关概念了解。xmpp,jabber,bosh等
  13. 【金融】- 净资产收益率(ROE)计算,杜邦分析法+python处理
  14. 胶囊网络之 Found a Reason for me? Weakly-supervised Grounded Visual Question Answering using Capsules论文笔记
  15. maven项目install报错:\target\surefire-reports for the individual test results
  16. 如何快速构建千人规模的数字化研发管理系统
  17. 蘑菇街2016校园招聘——回文串
  18. 猜拳小游戏编程(python)
  19. Java 导出富文本到Word(包含图片)
  20. linux 查找某个程序,Linux查找特定程序whereis实例详解

热门文章

  1. Python实现输出手写体图片
  2. 滴滴研究院副院长叶杰平 | 大规模稀疏和低秩学习
  3. Helm 创建一个NOTES.txt文件
  4. cas112592-50-4/四溴苯基卟啉镍/nickel(II) tetra(p-Br-phenyl)porphyrin/分子式:C44H24Br4N4Ni++/分子量:986.99800
  5. EPD服务器主机分销V2.8系统网站源码
  6. Best of Vim Tips 中文版
  7. Docker实战-部署GPE微服务的监控体系(二)
  8. 图片横向滚动 01-兼容IE8和Chrome浏览器
  9. mysql的where子查询_MySQL where型子查询
  10. 中止执行后超过2年_执行中止后恢复执行的期限有什么规定