题目描述:

写一个数据结构,支持查询一个矩形的最大值 并将这个矩形的值全部变为 这个最大值加一个常数

题目分析:

二维线段树+标记永久化
maxi表示子树内的一个最大值,tag表示子树全部都被覆盖的值…

题目链接:

Luogu 3437

Ac 代码:

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
int Maxx,Maxy,n;
struct inside_seg{int maxi[4005],tag[4005];void modify(int o,int l,int r,int ql,int qr,int k){maxi[o]=std::max(maxi[o],k);if(ql<=l&&r<=qr) return (void)(tag[o]=std::max(tag[o],k));int mid=(l+r)>>1;if(ql<=mid) modify((o<<1),l,mid,ql,qr,k);if(qr>mid) modify((o<<1)|1,mid+1,r,ql,qr,k);}int ask(int o,int l,int r,int ql,int qr){if(ql<=l&&r<=qr) return std::max(tag[o],maxi[o]);int mid=(l+r)>>1;int ans=tag[o];if(ql<=mid) ans=std::max(ans,ask((o<<1),l,mid,ql,qr));if(qr>mid) ans=std::max(ans,ask((o<<1)|1,mid+1,r,ql,qr));return ans;}
};
struct external_seg{inside_seg maxi[4005],tag[4005];void modify(int o,int l,int r,int ql,int qr,int y1,int y2,int k){maxi[o].modify(1,0,Maxy,y1,y2,k);if(ql<=l&&r<=qr) return (void)(tag[o].modify(1,0,Maxy,y1,y2,k));int mid=(l+r)>>1;if(ql<=mid) modify((o<<1),l,mid,ql,qr,y1,y2,k);if(qr>mid) modify((o<<1)|1,mid+1,r,ql,qr,y1,y2,k);}int ask(int o,int l,int r,int ql,int qr,int y1,int y2){if(ql<=l&&r<=qr) return maxi[o].ask(1,0,Maxy,y1,y2);int mid=(l+r)>>1;int ans=tag[o].ask(1,0,Maxy,y1,y2);if(ql<=mid) ans=std::max(ans,ask((o<<1),l,mid,ql,qr,y1,y2));if(qr>mid) ans=std::max(ans,ask((o<<1)|1,mid+1,r,ql,qr,y1,y2));return ans;}
}T;
int main()
{scanf("%d%d%d",&Maxx,&Maxy,&n);for(int i=1,d,s,h,x,y;i<=n;i++){scanf("%d%d%d%d%d",&d,&s,&h,&x,&y);h+=T.ask(1,0,Maxx,x,x+d-1,y,y+s-1);T.modify(1,0,Maxx,x,x+d-1,y,y+s-1,h);}printf("%d\n",T.ask(1,0,Maxx,0,Maxx,0,Maxy));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. 【题解】[POI2006」Tet-Tetris 3D

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

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

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

  4. P3437 [POI2006]TET-Tetris 3D

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

  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. 读论文:(nvdiffrec) Extracting Triangular 3D Models, Materials, and Lighting From Images

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

  8. 俄罗斯方块(Tetris)

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

  9. java tetris_Java | Tetris

    基于 Java-Swing 实现俄罗斯方块 Preview 普通模式: 加速模式: 设计思路 方块的属性 方块表示: 由四维数组 SHAPE[][][][] 表示7种方块及每种方块的4种翻转状态. 由 ...

最新文章

  1. JavaScript 同源策略
  2. spring Aop实现身份验证和springboot异常统一处理
  3. [SpringSecurity]web权限方案_用户注销
  4. js ajax java传参_js使用ajax传值给后台,后台返回字符串处理方法
  5. 优秀网站设计:打造有吸引力的网站(原书第3版)
  6. Cloudera Certified Associate Administrator案例之Install篇
  7. 微服务 雪崩效应 与 Hystrix 断路器使用入门
  8. HTML5游戏开发5条建议及开发工具分享
  9. Unity3D C#数学系列之求点到直线的距离
  10. SonarQube task ‘xxx‘ status is ‘PENDING‘
  11. C语言(经典编程题:报数游戏)
  12. Linux性能优化实战:如何“快准狠”找到系统内存的问题?(21)
  13. 网络基础(四) — QUIC协议
  14. 2015 岁末 祝福 感恩
  15. UE C++中获得蓝图函数返回值
  16. Python基础:str字符串和list列表的转换
  17. 自定义交叉熵损失函数的几个问题
  18. WKWebView高级使用
  19. 探索ESP8285(2)搭建Windows版MQTT服务器
  20. React-hooks-ts-antd项目 使用阿里图标库中的图标

热门文章

  1. 多linux系统的安装方法,在Linux系统中安装使用WPS的方法
  2. Java POI 对Excel合并单元格的数据处理
  3. 无鸭不过秋,这样吃鸭润燥解乏!
  4. 立体匹配---立体匹配过程
  5. 怎样让计算机背景图片变大,电脑上如何使照片调成1寸??excel调整背景图片大小...
  6. CSS 画三角形、半圆、扇形、
  7. 使用cocos2d-x实现一款类似《Flappy Bird》的游戏
  8. 设计Date类,该类采用3个整型存储日期: month、 data和year。其函数成员具有按如下格式输出日期的功能(异常处理)
  9. 微信小程序连接mysql
  10. Python入门(十八):MyQR 二维码制作