bzoj1513
二维线段树
听说二维线段树不能下传标记?
就是裸的二维线段树,由于每次高度只能增加,所以我们就可以标记永久化
每个线段树里有两个数组,mx和mark,每次修改路径上所有mx都要修改,mark是区间的精确覆盖修改
每次查询把路径上所有mark取max,然后和精确覆盖区间mx取max
为什么这样做呢?我们能不能只用一个数组?当然不行,如果我们只用mark,那么假设我们更新区间[1,4],然后查询区间[1,5],那么答案明显不对,如果我们只用mx,那么我们更新[1,1],查询[2,2],那么我们的答案被[1,1]更新了,也是不对。
#include<bits/stdc++.h>
using namespace std;
const int N = ;
int n, m, t;
struct Segment_Tree_X {
int mx[N], mark[N];
void update(int l, int r, int x, int a, int b, int tmp)
{
if(l > b || r < a) return;
mx[x] = max(mx[x], tmp);
if(l >= a && r <= b)
{
mark[x] = max(mark[x], tmp);
return;
}
int mid = (l + r) >> ;
update(l, mid, x << , a, b, tmp);
update(mid + , r, x << | , a, b, tmp);
}
int query(int l, int r, int x, int a, int b)
{
if(l > b || r < a) return ;
if(l >= a && r <= b) return mx[x];
int mid = (l + r) >> ;
return max(mark[x], max(query(l, mid, x << , a, b), query(mid + , r, x << | , a, b)));
}
};
struct Segment_Tree_Y {
Segment_Tree_X mx[N], mark[N];
void update(int l, int r, int x, int a, int b, int y_l, int y_r, int tmp)
{
if(l > b || r < a) return;
mx[x].update(, m, , y_l, y_r, tmp);
if(l >= a && r <= b)
{
mark[x].update(, m, , y_l, y_r, tmp);
return;
}
int mid = (l + r) >> ;
update(l, mid, x << , a, b, y_l, y_r, tmp);
update(mid + , r, x << | , a, b, y_l, y_r, tmp);
}
int query(int l, int r, int x, int a, int b, int y_l, int y_r)
{
if(l > b || r < a) return ;
if(l >= a && r <= b) return mx[x].query(, m, , y_l, y_r);
int mid = (l + r) >> ;
return max(mark[x].query(, m, , y_l, y_r), max(query(l, mid, x << , a, b, y_l, y_r), query(mid + , r, x << | , a, b, y_l, y_r)));
}
} T;
int main()
{
scanf("%d%d%d", &n, &m, &t);
while(t --)
{
int d, s, w, x, y, tmp;
scanf("%d%d%d%d%d", &d, &s, &w, &x, &y);
++ x;
++ y;
tmp = T.query(, n, , x, x + d - , y, y + s - );
T.update(, n, , x, x + d - , y, y + s - , w + tmp);
}
printf("%d\n", T.query(, n, , , n, , m));
return ;
}
bzoj1513的更多相关文章
- BZOJ1513 [POI2006]Tet-Tetris 3D 【二维线段树】
题目链接 BZOJ1513 题解 真正地理解了一波线段树标记永久化的姿势 每个节点维护两个值\(v\)和\(tag\) \(v\)代表儿子中的最值 \(tag\)代表未下传的最值 显然节点的区间大于等 ...
- 【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
1513: [POI2006]Tet-Tetris 3D Time Limit: 30 Sec Memory Limit: 162 MB Submit: 733 Solved: 245 [Subm ...
- BZOJ1513:[POI2006]TET-Tetris 3D(线段树套线段树)
Description Task: Tetris 3D "Tetris" 游戏的作者决定做一个新的游戏, 一个三维的版本, 在里面很多立方体落在平面板,一个立方体开始落下直到碰上一 ...
- [BZOJ1513]Tet-Tetris 3D
get了新的标记永久化技能- 这题要求询问max和覆盖,因为是线段树套线段树,所以内外都不可以标记下传 这种标记永久化的套路是维护两个标记:$mx,all$,$mx$表示这个子树内的真最大值,$all ...
- [转载]hzwer的bzoj题单
counter: 664BZOJ1601 BZOJ1003 BZOJ1002 BZOJ1192 BZOJ1303 BZOJ1270 BZOJ3039 BZOJ1191 BZOJ1059 BZOJ120 ...
- BZOJ刷题列表【转载于hzwer】
沿着黄学长的步伐~~ 红色为已刷,黑色为未刷,看我多久能搞完吧... Update on 7.26 :之前咕了好久...(足见博主的flag是多么emmm......)这几天开始会抽时间刷的,每天几道 ...
随机推荐
- 舆论的力量---数学建模初探(SI模型)
在高中时除了物理竞赛没有学习外,竞赛的五大学科剩下的四门均有所涉猎及参加,因而精力分散太多.因此下定决心大学时可以广泛涉猎知识,但是主攻的竞赛只能有两个ACM和MCM,如今虽然高考完挂,但学术之心尚存 ...
- bzoj 2802 [Poi2012]Warehouse Store STL
[Poi2012]Warehouse Store Time Limit: 10 Sec Memory Limit: 64 MBSec Special JudgeSubmit: 621 Solve ...
- 【2018 Multi-University Training Contest 2】
01: 02: 03: 04:https://www.cnblogs.com/myx12345/p/9394511.html 05: 06: 07:https://www.cnblogs.com/my ...
- Codeforces936B. Sleepy Game
还好这场没打 MD什么破题 n<=100000,m<=200000的图问从s点出发能否走奇数条边到一个没有出度的点. 直观的想法:做一个bfs,$f(i,0/1)$表示从$s$出发到$i$ ...
- castle problem——(深度优先搜索,递归实现和stack实现)
将问题的各状态之间的转移关系描述为一个图,则深度优先搜索遍历整个图的框架为:Dfs(v) {if( v 访问过)return;将v标记为访问过;对和v相邻的每个点u: Dfs(u);}int main ...
- linux awk常用命令【转载】
简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再 ...
- 原 ELK+Filebeat集中式日志解决方案(centos7)
https://blog.csdn.net/bittersweet0324/article/details/78503961
- React学习及实例开发(一)——开始
本文基于React v16.4.1 初学react,有理解不对的地方,欢迎批评指正^_^ 一.构建一个新项目 1.命令行运行如下命令,构建一个新的react项目 npm install -g crea ...
- eclipse提速01 - 禁用不常用的eclipse启动插件
会不断更新,需要的收藏 禁用不常用的eclipse启动插件(当然如果不需要可以卸载)
- javascript实现 京东淘宝等商城的商品图片大图预览功能(图片放大器)
在京东和淘宝等购买东西的时候,我们会经常预览左侧商品展示图片,把鼠标放到原图,右侧就会有个大图显示出细节.本文将带领大家写一个这样简单的功能! 一.实现原理 当鼠标移入某一图片内部时,图片上部会出 ...