洛谷 P3437 [POI2006]TET-Tetris 3D
二维线段树区间更新啊
树套树的外层树,如果是线段树的话一般似乎不能打标记?(毕竟标记不好下传)
然而起码对于这题是可以的...对于外层线段树,每个节点放两个内层线段树dat和setv,分别是得到的值和修改操作留下的标记。
然后外层线段树要标记永久化...标记永久化之后,标记的定义不一样了。
这道题里用dat[i]表示i节点表示的整段区间都达到的值,setv[i]表示i节点表示的区间的最大值。
(这两个的名字似乎反了?)
这样进行修改操作的时候,更新所有经过的节点的setv(因为只要经过该点,那么该点表示的区间和目标区间一定有相交部分),更新被目标区间完全包含的区间所在节点的dat(自然整段都达到那个值了)
进行查询操作的时候,"所有经过节点的dat"和"所有被目标区间完全包含的区间所在节点的setv"的最大值就是答案。
二维都一样,只不过外层线段树的查询是对于内层线段树的给定区间查询/修改
标记不下传
(一眼看起来似乎不是很对?有些信息被遗漏了?然而的确是对的23333)
(似乎修改和查询完全是对称的...)
错误记录:71行少了分号后的两个语句导致WA一片
#include<cstdio>
#include<algorithm>
#include<cstring>
#define lc (num<<1)
#define rc (num<<1|1)
#define mid ((l+r)>>1)
using namespace std;
int n,m;
namespace XXX
{
int L,R,x;
struct Y
{
int dat[],setv[];
//dat表示整段区间都达到的值,setv表示区间最大值
void update(int l,int r,int num)
{
setv[num]=max(setv[num],x);
if(L<=l&&r<=R)
{
dat[num]=max(dat[num],x);
return;
}
if(L<=mid) update(l,mid,lc);
if(mid<R) update(mid+,r,rc);
}
int query(int l,int r,int num)
{
if(L<=l&&r<=R) return setv[num];
int ans=dat[num];
if(L<=mid) ans=max(ans,query(l,mid,lc));
if(mid<R) ans=max(ans,query(mid+,r,rc));
return ans;
}
};
}
int L,R,x;
XXX::Y dat[],setv[];
void update(int l,int r,int num)
{
XXX::x=x;
setv[num].update(,m,);
if(L<=l&&r<=R)
{
XXX::x=x;
dat[num].update(,m,);
return;
}
if(L<=mid) update(l,mid,lc);
if(mid<R) update(mid+,r,rc);
}
int query(int l,int r,int num)
{
if(L<=l&&r<=R) return setv[num].query(,m,);
int ans=dat[num].query(,m,);
if(L<=mid) ans=max(ans,query(l,mid,lc));
if(mid<R) ans=max(ans,query(mid+,r,rc));
return ans;
}
int main()
{
int Q,d,s,w,xx,yy;
scanf("%d%d%d",&n,&m,&Q);
while(Q--)
{
scanf("%d%d%d%d%d",&d,&s,&w,&xx,&yy);xx++;yy++;
L=xx;R=xx+d-;XXX::L=yy;XXX::R=yy+s-;
x=query(,n,)+w;//printf("%d\n",x);
update(,n,);
}
L=;R=n;XXX::L=;XXX::R=m;
printf("%d",query(,n,));
return ;
}
洛谷 P3437 [POI2006]TET-Tetris 3D的更多相关文章
- 洛谷 P3437 [POI2006]TET-Tetris 3D 解题报告
P3437 [POI2006]TET-Tetris 3D 题目描述 The authors of the game "Tetris" have decided to make a ...
- 洛谷P3437 [POI2006]TET-Tetris 3D(二维线段树 标记永久化)
题意 题目链接 Sol 二维线段树空间复杂度是多少啊qwqqq 为啥这题全网空间都是\(n^2\)还有人硬要说是\(nlog^2n\)呀.. 对于这题来说,因为有修改操作,我们需要在外层线段树上也打标 ...
- [洛谷P3444] [POI2006]ORK-Ploughing
洛谷题目链接[POI2006]ORK-Ploughing 题目描述 Byteasar, the farmer, wants to plough his rectangular field. He ca ...
- 洛谷P3434 [POI2006]KRA-The Disks(线段树)
洛谷题目传送门 \(O(n)\)的正解算法对我这个小蒟蒻真的还有点思维难度.洛谷题解里都讲得很好. 考试的时候一看到300000就直接去想各种带log的做法了,反正不怕T...... 我永远只会有最直 ...
- 洛谷P3435 [POI2006]OKR-Period of Words [KMP]
洛谷传送门,BZOJ传送门 OKR-Period of Words Description 一个串是有限个小写字符的序列,特别的,一个空序列也可以是一个串. 一个串P是串A的前缀, 当且仅当存在串B, ...
- 洛谷P3434 [POI2006]KRA-The Disks [模拟]
题目传送门 KRA 题目描述 For his birthday present little Johnny has received from his parents a new plaything ...
- 【题解】洛谷P3435 [POI2006] OKR-Periods of Words(KMP)
洛谷P3435:https://www.luogu.org/problemnew/show/P3435 思路 来自Kamijoulndex大佬的解释 先把题面转成人话: 对于给定串的每个前缀i,求最长 ...
- 洛谷.3437.[POI2006]TET-Tetris 3D(二维线段树)
题目链接 下落一个d*s的方块,则要在这个平面区域找一个最高的h' 更新整个平面区域的值为h+h' 对于本题,维护最大高度h和all 对于平面的x轴维护一棵线段树t1,每个t1的节点维护对应y轴的两棵 ...
- 洛谷P3434 [POI2006]KRA-The Disks
P3434 [POI2006]KRA-The Disks 题目描述 For his birthday present little Johnny has received from his paren ...
随机推荐
- [NOIP2006] 提高组 洛谷P1066 2^k进制数
题目描述 设r是个2^k 进制数,并满足以下条件: (1)r至少是个2位的2^k 进制数. (2)作为2^k 进制数,除最后一位外,r的每一位严格小于它右边相邻的那一位. (3)将r转换为2进制数q后 ...
- Count Color POJ - 2777 线段树
Chosen Problem Solving and Program design as an optional course, you are required to solve all kinds ...
- SOJ 3531_Number Pyramids
[题意]给定一个数top及最底层元素个数n,构成一个以给top为塔尖,层数为n的如杨辉三角的金字塔,求有多少种 [分析]最终种数其实只与最底层的n个数的组合数有关,上层的每个都数是由最底层数相加得来 ...
- P2212 [USACO14MAR]浇地Watering the Fields 洛谷
https://www.luogu.org/problem/show?pid=2212 题目描述 Due to a lack of rain, Farmer John wants to build a ...
- Ubuntu 16.04安装RabbitVCS替代TortoiseSVN/TortoiseGit
RabbitVCS官网:http://www.rabbitvcs.org/easonjim 1.添加PPA源 sudo add-apt-repository ppa:rabbitvcs/ppa 如果导 ...
- Eclipse错误:Syntax error on tokens, delete these tokens问题解决
错误:Syntax error on tokens, delete these tokens 出现这样的错误一般是括号.中英文字符.中英文标点.代码前面的空格,尤其是复制粘贴的代码,去掉即可.
- dubbo安装和使用
转载:http://blog.csdn.net/zjcjava/article/details/78766095 背景 Dubbo的开源人梁飞在内部的交流会上宣布重启dubbo的维护和更新,具体PPT ...
- 一条SQL语句面试题:求选修所有课程的学生
前几天求职面试,有一道SQL题:给出三个表:学生.课程.成绩,求选修了所有课程的学生. 一道看似很简单的问题,把我难住了,我改了又改,涂涂画画,抓耳挠腮,因为试卷没有多少空白位置了,最后只好放弃.心情 ...
- MyEclipse,Eclipse注释规范模板
注释的作用:myeclipse中java文件头注释格式设置,最终可用于javadoc.exe生成API文档,同时提高了代码的可读性 设置方法: windows->preferences-> ...
- 【bzoj1269】[AHOI2006]文本编辑器editor
在bzoj上乱翻,发现了可持久化并查集,然后baidu了一下,发现一种叫rope的东西. !!!真的太爽了!!! 直接上代码,感受一下(也是蒯来的). 由于rope的底层实现,in ...