bzoj 1513 POI2006 Tet-Tetris 3D 二维线段树+标记永久化
1511: [POI2006]OKR-Periods of Words
Time Limit: 5 Sec Memory Limit: 64 MB
Submit: 351 Solved: 220
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
babababa
Sample Output
#include<cstring>
#include<cmath>
#include<cstdio>
#include<algorithm>
#include<iostream> #define N 3007 #define Wb putchar(' ')
#define We putchar('\n')
#define rg register int
using namespace std;
inline int read()
{
int x=,f=;char ch=getchar();
while(!isdigit(ch)){if(ch=='-')f=-;ch=getchar();}
while(isdigit(ch)){x=(x<<)+(x<<)+ch-'';ch=getchar();}
return x*f;
}
inline void write(int x)
{
if(x<) putchar('-'),x=-x;
if (x==) putchar();
int num=;char c[];
while(x) c[++num]=(x%)+,x/=;
while(num) putchar(c[num--]);
} int D,S,n;
int ql,qr,qd,qu; #define ls p<<1
#define rs p<<1|1
struct segx
{
int v[N],tag[N];
void change(int p,int l,int r,int x,int y,int z)
{
v[p]=max(v[p],z);
if (l==x&&y==r){tag[p]=max(tag[p],z);return;}
int mid=(l+r)>>;
if (y<=mid) change(ls,l,mid,x,y,z);
else if (x>mid) change(rs,mid+,r,x,y,z);
else change(ls,l,mid,x,mid,z),change(rs,mid+,r,mid+,y,z);
}
int query(int p,int l,int r,int x,int y)
{
if (l==x&&y==r) return v[p];
int mid=(l+r)>>,res=tag[p];
if (y<=mid) res=max(res,query(ls,l,mid,x,y));
else if (x>mid) res=max(res,query(rs,mid+,r,x,y));
else res=max(res,max(query(ls,l,mid,x,mid),query(rs,mid+,r,mid+,y)));
return res;
}
};
struct segy
{
segx v[N],tag[N];
void change(int p,int l,int r,int x,int y,int z)
{
v[p].change(,,S,qd,qu,z);
if (l==x&&y==r){tag[p].change(,,S,qd,qu,z);return;}
int mid=(l+r)>>;
if (y<=mid) change(ls,l,mid,x,y,z);
else if (x>mid) change(rs,mid+,r,x,y,z);
else change(ls,l,mid,x,mid,z),change(rs,mid+,r,mid+,y,z);
}
int query(int p,int l,int r,int x,int y)
{
if (l==x&&y==r) return v[p].query(,,S,qd,qu);
int mid=(l+r)>>,res=tag[p].query(,,S,qd,qu);
if (y<=mid) res=max(res,query(ls,l,mid,x,y));
else if (x>mid) res=max(res,query(rs,mid+,r,x,y));
else res=max(res,max(query(ls,l,mid,x,mid),query(rs,mid+,r,mid+,y)));
return res;
}
}T;
#undef ls
#undef rs int main()
{
D=read(),S=read(),n=read();
rg d,s,w,x,y;
for (rg i=;i<=n;i++)
{
d=read(),s=read(),w=read(),x=read(),y=read();
ql=x+,qr=x+d,qd=y+,qu=y+s;
int ans=T.query(,,D,ql,qr);
T.change(,,D,ql,qr,ans+w);
}
qd=,qu=S;
write(T.query(,,D,,D));
}
bzoj 1513 POI2006 Tet-Tetris 3D 二维线段树+标记永久化的更多相关文章
- 洛谷P3437 [POI2006]TET-Tetris 3D(二维线段树 标记永久化)
题意 题目链接 Sol 二维线段树空间复杂度是多少啊qwqqq 为啥这题全网空间都是\(n^2\)还有人硬要说是\(nlog^2n\)呀.. 对于这题来说,因为有修改操作,我们需要在外层线段树上也打标 ...
- BZOJ4785 [Zjoi2017]树状数组 【二维线段树 + 标记永久化】
题目链接 BZOJ4785 题解 肝了一个下午QAQ没写过二维线段树还是很难受 首先题目中的树状数组实际维护的是后缀和,这一点凭分析或经验或手模观察可以得出 在\(\mod 2\)意义下,我们实际求出 ...
- 洛谷 P3688 - [ZJOI2017]树状数组(二维线段树+标记永久化)
题面传送门 首先学过树状数组的应该都知道,将树状数组方向写反等价于前缀和 \(\to\) 后缀和,因此题目中伪代码的区间求和实质上是 \(sum[l-1...n]-sum[r...n]=sum[l-1 ...
- 【BZOJ1513】[POI2006]Tet-Tetris 3D 二维线段树
[BZOJ1513][POI2006]Tet-Tetris 3D Description Task: Tetris 3D "Tetris" 游戏的作者决定做一个新的游戏, 一个三维 ...
- 洛谷.3437.[POI2006]TET-Tetris 3D(二维线段树)
题目链接 下落一个d*s的方块,则要在这个平面区域找一个最高的h' 更新整个平面区域的值为h+h' 对于本题,维护最大高度h和all 对于平面的x轴维护一棵线段树t1,每个t1的节点维护对应y轴的两棵 ...
- BZOJ 4785 [Zjoi2017]树状数组 | 二维线段树
题目链接 BZOJ 4785 题解 这道题真是令人头秃 = = 可以看出题面中的九条可怜把求前缀和写成了求后缀和,然后他求的区间和却仍然是sum[r] ^ sum[l - 1],实际上求的是闭区间[l ...
- BZOJ.4553.[HEOI2016&TJOI2016]序列(DP 树状数组套线段树/二维线段树(MLE) 动态开点)
题目链接:BZOJ 洛谷 \(O(n^2)\)DP很好写,对于当前的i从之前满足条件的j中选一个最大值,\(dp[i]=d[j]+1\) for(int j=1; j<i; ++j) if(a[ ...
- BZOJ 3489 A simple rmq problem 可持久化KDtree/二维线段树
题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=3489 题意概述: 给出一个序列,每次询问一个序列区间中仅出现了一次的数字最大是多少,如果 ...
- [BZOJ4785][ZJOI2017]树状数组(概率+二维线段树)
4785: [Zjoi2017]树状数组 Time Limit: 40 Sec Memory Limit: 512 MBSubmit: 297 Solved: 195[Submit][Status ...
随机推荐
- IT视频课程集(包含各类Oracle、DB2、Linux、Mysql、Nosql、Hadoop、BI、云计算、编程开发、网络、大数据、虚拟化
马哥Linux培训视频课程:http://pan.baidu.com/s/1pJwk7dp Oracle.大数据系列课程:http://pan.baidu.com/s/1bnng3yZ 天善智能BI培 ...
- XCode 6.4 Alcatraz 安装的插件不可用
升级Xcode 6.4后插件都不可用了,解决办法: 1.在 Alcatraz中删除插件并退出Xcode: 2.重新打开Xcode 并安装: 3.退出Xcode: 4.进入Xcode,会提示如图,点击 ...
- maven项目org.springframework.web.context.ContextLoaderListener的异常和tomcat zipexception的异常
使用到spring的maven web项目,在运行servers时,报错找不到org.springframework.web.context.ContextLoaderListener,web.xml ...
- linux虚拟机发邮件给163邮件
配置/etc/mail.rc文件 set from=xxxxxxxx@163.com smtp=smtp.163.com set smtp-auth-user=yinhuanyi_cn@163.com ...
- 201621123037 《Java程序设计》第14周学习总结
作业14-数据库 标签(空格分隔): Java 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 使用数据库技术改造你的系统 2.1 简述如何使用数据库技术改造 ...
- 初学Objective - C语法之代码块(block)
一.block声明 1.无参数,无返回值: void (^sayHi)(); 2.有参数,有返回值: NSInteger (^operateOfValue)(NSInteger num); block ...
- Java数学函数Math类
Java数学函数Math类常用: Math.abs(12.3); //12.3 返回这个数的绝对值 Math.abs(-12.3); //12.3 Math.copySign(1.23, -12.3) ...
- SQL Inserted和deleted详解
create trigger updateDeleteTime on user for update as begin update user set UpdateTime=(getdate()) f ...
- dbgrid多选日记
procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char); begin then begin DBGrid1.DataSourc ...
- Kafka生产者各种启动参数说明
首先是启动一个生产者 final String kafkazk="localhost:9092"; String topic="testAPI"; Proper ...