[BZOJ1513]Tet-Tetris 3D
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的更多相关文章
- 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 【二维线段树】
题目链接 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
1513: [POI2006]Tet-Tetris 3D Time Limit: 30 Sec Memory Limit: 162 MB Submit: 733 Solved: 245 [Subm ...
- bzoj 1513 [POI2006]Tet-Tetris 3D(二维线段树)
1513: [POI2006]Tet-Tetris 3D Time Limit: 30 Sec Memory Limit: 162 MBSubmit: 540 Solved: 175[Submit ...
- 第1部分: 游戏引擎介绍, 渲染和构造3D世界
原文作者:Jake Simpson译者: 向海Email:GameWorldChina@myway.com ---------------------------------------------- ...
- 基于 HTML5 的 WebGL 3D 版俄罗斯方块
前言 摘要:2D 的俄罗斯方块已经被人玩烂了,突发奇想就做了个 3D 的游戏机,用来玩俄罗斯方块...实现的基本想法是先在 2D 上实现俄罗斯方块小游戏,然后使用 3D 建模功能创建一个 3D 街机模 ...
- 洛谷 P3437 [POI2006]TET-Tetris 3D 解题报告
P3437 [POI2006]TET-Tetris 3D 题目描述 The authors of the game "Tetris" have decided to make a ...
随机推荐
- JQuery中的each()的使用
each()函数是基本上所有的框架都提供了的一个工具类函数,通过它,你可以遍历对象.数组的属性值并进行处理. jQuery和jQuery对象都实现了该方法,对于jQuery对象,只是把each方法简单 ...
- MySQL备份之mysqlhotcopy与注意事项
此文章主要向大家介绍的是MySQL备份之mysqlhotcopy与其在实际操作中应注意事项的描述,我们大家都知道实现MySQL数据库备份的常用方法有三个,但是我们今天主要向大家介绍的是其中的一个比较好 ...
- 安卓recyclerview的基本使用
1.先在布局文件中写 <android.support.v7.widget.RecyclerView android:id="@+id/my_recycler_view" a ...
- javascript中Date使用总结(转)
//全局函数 Date //Date 类的静态方法 Date.parse Date.UTC //Date 对象的建立方法 new Date() new Date(毫秒数) new Date(标准时间格 ...
- 调用webservice接口
这里是cxf服务器,采用myeclipse6.5,把wsdl放到本地的方式. 新建一个包, 把解析到的类放在这个包下面. 生成的代码结构: 调用: public static String callI ...
- AOP相关
静态代理.动态代理与AOP: 简单易懂:http://blog.csdn.net/hejingyuan6/article/details/36203505 补充:http://layznet.itey ...
- 【bzoj3261】最大异或和
就是一个可持久化Trie....... #include<bits/stdc++.h> #define N 600005 using namespace std; inline int r ...
- linux环境下的GUN make学习笔记(一)
第一章:概述 1.1:make概述 在linux环境下使用make工具能够比较容易的构建一个属于自己的工程,整个工程的编译只需要一个命令就可以完成编译.连接以至于最后的执行.不过我们需要投入一些时间去 ...
- discuz自定义生成单页面
在pc端,若要生成一个单页面,有一个比较方便的方法是生成新的专题页,然后diy其中的内容. 不过这种做法有两个缺点 1 url太过冗赘 2 只有一个插入url代码功能,没有文本编辑功能 而且文本框小的 ...
- DRF的认证与权限功能
认证 1.全局配置 在setting.py进行配置. REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': ( # 'rest_framework. ...