bzoj1513: [POI2006]Tet-Tetris 3D
Description
Input
Output
zkw线段树套zkw线段树+标记永久化 维护区间最值
#include<cstdio>
int n,D,S;
int x1,y1,x2,y2,h,ans,a0=;
int tr[][][][];
char buf[],*ptr=buf-;
int _(){
int x=,c=*++ptr;
while(c<)c=*++ptr;
while(c>)x=x*+c-,c=*++ptr;
return x;
}
inline void maxs(int&a,int b){if(a<b)a=b;}
void g(int(*a)[]){
int l=+y1,r=+y2,ld=,rd=;
for(;l^r^;l>>=,r>>=){
if(ld)maxs(ans,a[l][]);
if(rd)maxs(ans,a[r][]);
if(~l&)ld=,maxs(ans,a[l^][]);
if(r&)rd=,maxs(ans,a[r^][]);
}
if(ld)maxs(ans,a[l][]);
if(rd)maxs(ans,a[r][]);
for(l>>=;l;l>>=)maxs(ans,a[l][]);
}
void s(int(*a)[]){
int l=+y1,r=+y2,ld=,rd=;
for(;l^r^;l>>=,r>>=){
if(ld)maxs(a[l][],ans);
if(rd)maxs(a[r][],ans);
if(~l&)ld=,maxs(a[l^][],ans),maxs(a[l^][],ans);
if(r&)rd=,maxs(a[r^][],ans),maxs(a[r^][],ans);
}
if(ld)maxs(a[l][],ans);
if(rd)maxs(a[r][],ans);
for(l>>=;l;l>>=)maxs(a[l][],ans);
}
void cal(){
ans=;
int l=+x1,r=+x2,ld=,rd=;
for(;l^r^;l>>=,r>>=){
if(ld)g(tr[][l]);
if(rd)g(tr[][r]);
if(~l&)ld=,g(tr[][l^]);
if(r&)rd=,g(tr[][r^]);
}
if(ld)g(tr[][l]);
if(rd)g(tr[][r]);
for(l>>=;l;l>>=)g(tr[][l]);
ans+=h;
maxs(a0,ans);
l=+x1,r=+x2,ld=,rd=;
for(;l^r^;l>>=,r>>=){
if(ld)s(tr[][l]);
if(rd)s(tr[][r]);
if(~l&)ld=,s(tr[][l^]),s(tr[][l^]);
if(r&)rd=,s(tr[][r^]),s(tr[][r^]);
}
if(ld)s(tr[][l]);
if(rd)s(tr[][r]);
for(l>>=;l;l>>=)s(tr[][l]);
}
int main(){
fread(buf,,sizeof(buf),stdin);
D=_();S=_();n=_();
for(int i=;i<n;++i){
x2=_();y2=_();h=_();
x1=_();y1=_();
x2+=x1;y2+=y1;
++x1;++y1;
cal();
}
printf("%d",a0);
return ;
}
bzoj1513: [POI2006]Tet-Tetris 3D的更多相关文章
- bzoj1513【POI2006】Tet-Tetris 3D
1513: [POI2006]Tet-Tetris 3D Time Limit: 30 Sec Memory Limit: 162 MB Submit: 733 Solved: 245 [Subm ...
- 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" 游戏的作者决定做一个新的游戏, 一个三维 ...
- bzoj 1513 [POI2006]Tet-Tetris 3D(二维线段树)
1513: [POI2006]Tet-Tetris 3D Time Limit: 30 Sec Memory Limit: 162 MBSubmit: 540 Solved: 175[Submit ...
- 洛谷 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
题目 P3437 [POI2006]TET-Tetris 3D 做法 一眼就是二维线段树,仔细想想,赋值操作怎么办??\(lazy\)标记放在一维,下一次又来放个标记二维就冲突了 正解:永久化标记 怎 ...
- bzoj 1513 POI2006 Tet-Tetris 3D 二维线段树+标记永久化
1511: [POI2006]OKR-Periods of Words Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 351 Solved: 220[S ...
- 【BZOJ】1513: [POI2006]Tet-Tetris 3D
题意 给\(n(1 \le n \le 20000)\)个立方体\((x, y, z)\),依次落下.求所有立方体落下完了以后最高的高度. 分析 平面求最大值,平面更新最大值. 题解 二维线段树走起, ...
随机推荐
- terminator终端工具
terminator是个很好的终端程序,在Ubuntu Linux下安装如下: sudo apt-get install terminator 可在同一屏打开多个窗口:
- ios7中的多任务
转自:http://onevcat.com/2013/08/ios7-background-multitask/ WWDC 2013 Session笔记 - iOS7中的多任务 iOS7的后台多任务特 ...
- 64位Win7系统下vs2010调试无法连接oracle
64位win7系统的Program Files (x86)路径中有括号,oracle不认识这样的路径,所以就出现不能连接数据库的问题.所以我们可以将vs2010的内部调试web服务器WebDev.We ...
- VS2015打开工程 未能正确加载“”包的问题
启动vs2015专业版时,出现类似于这样的提示框,有好几个,点击是或否,但下次打开还是会出现.寻找了网上的一些解决办法,例如用vs命令窗口或其他,但都无疾而终,下面提供的这个办法,顺利解决此问题 1. ...
- Python开发入门与实战12-业务逻辑层
12. Biz业务层 前面的章节我们把大量的业务函数都放在了views.py里,按照目前这一的写法,当我们编写的系统复杂较高时,我们的views.py将会越来越复杂,大量的业务函数包含其中使其成为一个 ...
- Jmeter—6 CSV Data Set Config 通过文件导入数据
线程组循环次数大于1的时候,请求里每次提交的数据都相同.有的系统限制了不能提交相同数据,我们通过 CSV Data Set Config 加载csv文件数据. 1 创建一个文本文件,输入参数值保存为. ...
- wireshark使用方法(学习笔记一)
wireshark是非常流行的网络封包分析软件,功能十分强大.可以截取各种网络封包,显示网络封包的详细信息.使用wireshark的人必须了解网络协议,否则就看不懂wireshark了. 为了安全考虑 ...
- mysql linux终端登陆
mysql -uroot -hlocalhost -psorry 设置远程登录 用户名及密码 GRANT ALL PRIVILEGES ON *.* TO root@"%" IDE ...
- Hadoop 如何查看是否32位
1.从哪些地方可以识别hadoop是32位还是64位?2.hadoop本地库在什么位置? hadoop在安装的时候,我们需要知道hadoop版本是32位还是64位. hadoop官网本来提供的都是32 ...
- HDU 1198(并查集)
题意:给你11个图,每一个都有管道,然后给一张由这11个正方形中的n个组成的图,判断有几条连通的管道: 思路:在大一暑假的时候做过这道题,当时是当暴力来做的,正解是并查集,需要进行一下转换: 转换1: ...