浅谈树状数组与线段树:https://www.cnblogs.com/AKMer/p/9946944.html

浅谈标记永久化:https://www.cnblogs.com/AKMer/p/10137227.html

题目传送门:https://www.luogu.org/problemnew/show/P3437

位置线段树套位置线段树,支持区间询问最大值和区间取\(max\)操作。

标记永久化,每次询问把区间内最大值和覆盖这个区间的标记取\(max\)即可。

时间复杂度:\(O(NlogDlogS)\)

空间复杂度:\(O(DS)\)

代码如下:

#include <cstdio>
#include <algorithm>
using namespace std; const int maxn=1005; int D,S,N; int read() {
int x=0,f=1;char ch=getchar();
for(;ch<'0'||ch>'9';ch=getchar())if(ch=='-')f=-1;
for(;ch>='0'&&ch<='9';ch=getchar())x=x*10+ch-'0';
return x*f;
} struct segment_treeS {
int mx[maxn<<2],tag[maxn<<2]; void change(int p,int l,int r,int L,int R,int v) {
mx[p]=max(mx[p],v);
if(L<=l&&r<=R) {tag[p]=max(tag[p],v);return;}
int mid=(l+r)>>1;
if(L<=mid)change(p<<1,l,mid,L,R,v);
if(R>mid)change(p<<1|1,mid+1,r,L,R,v);
} int query(int p,int l,int r,int L,int R) {
if(L<=l&&r<=R)return mx[p];
int mid=(l+r)>>1,res=tag[p];
if(L<=mid)res=max(res,query(p<<1,l,mid,L,R));
if(R>mid)res=max(res,query(p<<1|1,mid+1,r,L,R));
return res;
}
}; struct segment_treeD {
segment_treeS mx[maxn<<2],tag[maxn<<2]; int query(int p,int l,int r,int x1,int x2,int y1,int y2) {
if(x1<=l&&r<=x2)return mx[p].query(1,0,S-1,y1,y2);
int mid=(l+r)>>1,res=tag[p].query(1,0,S-1,y1,y2);
if(x1<=mid)res=max(res,query(p<<1,l,mid,x1,x2,y1,y2));
if(x2>mid)res=max(res,query(p<<1|1,mid+1,r,x1,x2,y1,y2));
return res;
} void change(int p,int l,int r,int x1,int x2,int y1,int y2,int v) {
mx[p].change(1,0,S-1,y1,y2,v);
if(x1<=l&&r<=x2) {tag[p].change(1,0,S-1,y1,y2,v);return;}
int mid=(l+r)>>1;
if(x1<=mid)change(p<<1,l,mid,x1,x2,y1,y2,v);
if(x2>mid)change(p<<1|1,mid+1,r,x1,x2,y1,y2,v);
}
}T; int main() {
D=read(),S=read(),N=read();
for(int i=1;i<=N;i++) {
int d=read(),s=read(),w=read(),x=read(),y=read();
int mx=T.query(1,0,D-1,x,x+d-1,y,y+s-1);
T.change(1,0,D-1,x,x+d-1,y,y+s-1,mx+w);
}
printf("%d\n",T.query(1,0,D-1,0,D-1,0,S-1));
return 0;
}

洛谷【P3437】[POI2006]TET-Tetris 3D的更多相关文章

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

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

  2. 洛谷P3437 [POI2006]TET-Tetris 3D(二维线段树 标记永久化)

    题意 题目链接 Sol 二维线段树空间复杂度是多少啊qwqqq 为啥这题全网空间都是\(n^2\)还有人硬要说是\(nlog^2n\)呀.. 对于这题来说,因为有修改操作,我们需要在外层线段树上也打标 ...

  3. 洛谷 P3437 [POI2006]TET-Tetris 3D

    二维线段树区间更新啊 树套树的外层树,如果是线段树的话一般似乎不能打标记?(毕竟标记不好下传) 然而起码对于这题是可以的...对于外层线段树,每个节点放两个内层线段树dat和setv,分别是得到的值和 ...

  4. [洛谷P3444] [POI2006]ORK-Ploughing

    洛谷题目链接[POI2006]ORK-Ploughing 题目描述 Byteasar, the farmer, wants to plough his rectangular field. He ca ...

  5. 洛谷P3434 [POI2006]KRA-The Disks(线段树)

    洛谷题目传送门 \(O(n)\)的正解算法对我这个小蒟蒻真的还有点思维难度.洛谷题解里都讲得很好. 考试的时候一看到300000就直接去想各种带log的做法了,反正不怕T...... 我永远只会有最直 ...

  6. 洛谷P3435 [POI2006]OKR-Period of Words [KMP]

    洛谷传送门,BZOJ传送门 OKR-Period of Words Description 一个串是有限个小写字符的序列,特别的,一个空序列也可以是一个串. 一个串P是串A的前缀, 当且仅当存在串B, ...

  7. 洛谷P3434 [POI2006]KRA-The Disks [模拟]

    题目传送门 KRA 题目描述 For his birthday present little Johnny has received from his parents a new plaything ...

  8. 【题解】洛谷P3435 [POI2006] OKR-Periods of Words(KMP)

    洛谷P3435:https://www.luogu.org/problemnew/show/P3435 思路 来自Kamijoulndex大佬的解释 先把题面转成人话: 对于给定串的每个前缀i,求最长 ...

  9. 洛谷.3437.[POI2006]TET-Tetris 3D(二维线段树)

    题目链接 下落一个d*s的方块,则要在这个平面区域找一个最高的h' 更新整个平面区域的值为h+h' 对于本题,维护最大高度h和all 对于平面的x轴维护一棵线段树t1,每个t1的节点维护对应y轴的两棵 ...

  10. 洛谷P3434 [POI2006]KRA-The Disks

    P3434 [POI2006]KRA-The Disks 题目描述 For his birthday present little Johnny has received from his paren ...

随机推荐

  1. modelsim-altera

    一. 1.  Go to the menu Tools > Options.  2.  In the “General” category, select “EDA Tool Options”. ...

  2. conda清华源 pip 清华源ubuntu 清华镜像 R代理以及包的安装

    vim     ~/.condarc channels: - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/menpo/ - https:// ...

  3. 【WPF学习笔记】之如何通过后台C#代码添加(增/删/改按钮)实现对SQLServer数据库数据的更改

    首先,需要连接SQLServer数据库的服务器名称server.数据库名database.数据库用户名uid以及密码pwd,如下图: 然后需要以下数据库SQL代码段,还有一个myHelper.cs代码 ...

  4. Double类parseDouble()和valueOf()方法的区别

    数字类型的String字符串转换为浮点数通常采用parseDouble()和valueOf()方法, 两者主要是存在以下两点区别. 区别一:参数区别Double.parseDouble(java.la ...

  5. A20地址线问题

    [0]README text description from Zhaojiong's perfect analysis of Linux kernel . [1]A20地址线问题(干货来了) 198 ...

  6. 用canvas合成图片

    朋友圈有些分享功能是通过长按图片另存来实现的,就像淘宝内部要分享朋友圈的时候一样,这些图片可以用canvas来合成. 获取了img的dom对象以后,进行base64的转. //加载对象$page.ge ...

  7. ios -- 极光推送《3》 pod 方法

    iOS SDK 集成指南 SDK说明 适用版本 本文匹配的 SDK版本:r2.1.5 以后.查看最近更新了解最新的SDK更新情况.使用Xcode 6及以上版本可以使用新版Push SDK,Xcode ...

  8. iOS上使用自定义ttf字体

    本文转载至 http://blog.csdn.net/allison162004/article/details/38777777 项目中想使用第三方的字体,在stackoverflow上查询解决办法 ...

  9. spirng boot资料

    这里有个srping boot 各种整合的资料 https://blog.csdn.net/Winter_chen001/article/details/80537829 SpringBoot入门总结 ...

  10. 【BZOJ4200】[Noi2015]小园丁与老司机 DP+最小流

    [BZOJ2839][Noi2015]小园丁与老司机 Description 小园丁 Mr. S 负责看管一片田野,田野可以看作一个二维平面.田野上有 nn 棵许愿树,编号 1,2,3,…,n1,2, ...