get了新的标记永久化技能~

这题要求询问max和覆盖,因为是线段树套线段树,所以内外都不可以标记下传

这种标记永久化的套路是维护两个标记:$mx,all$,$mx$表示这个子树内的真最大值,$all$表示整个子树曾经被覆盖过这样的最大值

修改:更新经过节点的$mx$和覆盖区间节点的$all$

查询:统计经过节点的$all$和覆盖区间节点的$mx$

然后就不用下传标记了,还有写成struct会方便许多

类似地,区间加的标记永久化的两个标记是【子树和(假)】还有【子树增值】,【子树和(假)】+【子树增值】=【子树和(真)】

#include<stdio.h>
int n,m;
int max(int a,int b){return a>b?a:b;}
struct iseg{
	int mx[3010],al[3010];
	int query(int L,int R,int l,int r,int x){
		if(L<=l&&r<=R)return mx[x];
		int ans=al[x],mid=(l+r)>>1;
		if(L<=mid)ans=max(ans,query(L,R,l,mid,x<<1));
		if(mid<R)ans=max(ans,query(L,R,mid+1,r,x<<1|1));
		return ans;
	}
	void modify(int L,int R,int v,int l,int r,int x){
		mx[x]=max(mx[x],v);
		if(L<=l&&r<=R){
			al[x]=max(al[x],v);
			return;
		}
		int mid=(l+r)>>1;
		if(L<=mid)modify(L,R,v,l,mid,x<<1);
		if(mid<R)modify(L,R,v,mid+1,r,x<<1|1);
	}
};
struct oseg{
	iseg mx[3010],al[3010];
	int query(int L,int R,int Li,int Ri,int l,int r,int x){
		if(L<=l&&r<=R)return mx[x].query(Li,Ri,1,m,1);
		int ans=al[x].query(Li,Ri,1,m,1),mid=(l+r)>>1;
		if(L<=mid)ans=max(ans,query(L,R,Li,Ri,l,mid,x<<1));
		if(mid<R)ans=max(ans,query(L,R,Li,Ri,mid+1,r,x<<1|1));
		return ans;
	}
	void modify(int L,int R,int Li,int Ri,int v,int l,int r,int x){
		mx[x].modify(Li,Ri,v,1,m,1);
		if(L<=l&&r<=R)return al[x].modify(Li,Ri,v,1,m,1);
		int mid=(l+r)>>1;
		if(L<=mid)modify(L,R,Li,Ri,v,l,mid,x<<1);
		if(mid<R)modify(L,R,Li,Ri,v,mid+1,r,x<<1|1);
	}
}t;
int main(){
	int q,d,s,w,x,y;
	scanf("%d%d%d",&n,&m,&q);
	while(q--){
		scanf("%d%d%d%d%d",&d,&s,&w,&x,&y);
		t.modify(x+1,x+d,y+1,y+s,t.query(x+1,x+d,y+1,y+s,1,n,1)+w,1,n,1);
	}
	printf("%d",t.query(1,n,1,m,1,n,1));
}

[BZOJ1513]Tet-Tetris 3D的更多相关文章

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

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

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

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

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

    题目链接 BZOJ1513 题解 真正地理解了一波线段树标记永久化的姿势 每个节点维护两个值\(v\)和\(tag\) \(v\)代表儿子中的最值 \(tag\)代表未下传的最值 显然节点的区间大于等 ...

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

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

  5. bzoj1513【POI2006】Tet-Tetris 3D

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

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

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

  7. 第1部分: 游戏引擎介绍, 渲染和构造3D世界

    原文作者:Jake Simpson译者: 向海Email:GameWorldChina@myway.com ---------------------------------------------- ...

  8. 基于 HTML5 的 WebGL 3D 版俄罗斯方块

    前言 摘要:2D 的俄罗斯方块已经被人玩烂了,突发奇想就做了个 3D 的游戏机,用来玩俄罗斯方块...实现的基本想法是先在 2D 上实现俄罗斯方块小游戏,然后使用 3D 建模功能创建一个 3D 街机模 ...

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

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

随机推荐

  1. MySQL 数据库性能优化之缓存参数优化

    在平时被问及最多的问题就是关于 MySQL 数据库性能优化方面的问题,所以最近打算写一个MySQL数据库性能优化方面的系列文章,希望对初中级 MySQL DBA 以及其他对 MySQL 性能优化感兴趣 ...

  2. HDU4725:The Shortest Path in Nya Graph(最短路)

    The Shortest Path in Nya Graph Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ...

  3. HDU4280:Island Transport(最大流)

    Island Transport Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Other ...

  4. 在Debian9安装node和npm

    这学期又快结束了,坐在每天面对的电脑面,本着整理资料.更换心情的目的,我重装了一下自己的debian.下面就将自己安装node的过程进行记录与分享. node的官网:https://nodejs.or ...

  5. MyBatis对象关联关系---- association与collection

    Mybatis处理“一对多”的关系时,需要用到associasion元素.处理”多对一“用collection元素来实现(这两个元素在之前mapper文件中提到过). 本例子中,假设一名User可以有 ...

  6. 图论:Gale-Shapley算法

    Gale-Shapley算法又叫做延迟认可算法,它可以解决这么一个问题 一共有N位男士和N位女士 每位男士对每位女士都有一个好感度,让他们结合成为N对夫妻,要求男士优先表白,最后问结合情况 第一轮,每 ...

  7. 9张图让你明白什么叫做"一坨屎"一样的iOS垃圾代码

    前言:这是一个两万余行的商业项目,但代码质量却不敢恭维!     //本文永久链接,转载请注明出处:http://www.cnblogs.com/ChenYilong/p/3489939.html  ...

  8. DP+贪心水题合集_C++

    本文含有原创题,涉及版权利益问题,严禁转载,违者追究法律责任 本次是最后一篇免费的考试题解,以后的考试题目以及题解将会以付费的方式阅读,题目质量可以拿本次作为参考 本来半个月前就已经搞得差不多了,然后 ...

  9. 通过jQuery实现轮播效果

    HTML <div class="wrap"> <div id="slide"> <ul class="list&quo ...

  10. CDLinux 自动休眠功能的关闭方法

    CDLinux 自动休眠功能的关闭方法: 控制台下使用xset命令来完成. xset q  可以查看当前屏幕保护和电源管理的状态信息 具体设置时,常用的有以下参数: xset s  //这个参数设置屏 ...