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)\),依次落下.求所有立方体落下完了以后最高的高度. 分析 平面求最大值,平面更新最大值. 题解 二维线段树走起, ...
随机推荐
- RAID与双机热备简单介绍与区别
一. RAID技术详解 RAID是英文Redundant Array of Independent Disks的缩写,翻译成中文意思是“独立磁盘冗余阵列”,有时也简称磁盘阵列(Disk Arra ...
- absolute和fixed
共同点: 改变行内元素的呈现方式,display设置为block:让元素脱离文档流,不占据空间:默认会覆盖到非定位元素上. 不同点: absolute的根元素是相对于static定位以外的第一个父元素 ...
- 最短路径——Floyd算法
如何求一张图中任意两顶点之间的最短路径长度,这里写一种最简单的算法——Floyd算法: #include<stdio.h> #define inf 9999 int main() { ][ ...
- MVC、ORM、CURD、ActiveRecord、单一入口的概念
MVC MVC是一个设计模式,它强制性的使应用程序的输入.处理和输出分开.使用MVC应用程序被分成三个核心部件:模型(M).视图(V).控制器(C),它们各自处理自己的任务. 视图 :视图是用户看到并 ...
- 在chrome console加入jquery库
var jq = document.createElement('script'); jq.src = 'http://libs.baidu.com/jquery/1.9.1/jquery.min.j ...
- iOS开发UI篇—在UIImageView中添加按钮以及Tag的参数说明
ios开发UI篇—在ImageView中添加按钮以及Tag的参数说明 一.tag参数 一个视图通常都只有一个父视图,多个子视图,在开发中可以通过使用子视图的tag来取出对应的子视图.方法为Viewwi ...
- WCF服务开发与调用的完整示例
WCF服务开发与调用的完整示例 开发工具:VS2008 开发语言:C# 开发内容:简单的权限管理系统 第一步.建立WCF服务库 点击确定,将建立一个WCF 服务库示例程序,自动生成一个包括IServi ...
- Hadoop学习资料
转自:http://cloud21.iteye.com/blog/607175 第一手资源 hadoop官方网站 hadoop.apache.org 最权威的官方资源之一 dev.yahoo.hado ...
- 反射+泛型+缓存 ASP.NET的数据层通用类
using System; using System.Collections.Generic; using System.Text; using System.Reflection ; using S ...
- java.io.IOException: Too many open files
1.描述: 每日一样,例行打开hadoop集群的cloudera manager的管理界面.发现出现了多个bad health的服务.那么出现的这个问题就是查看该服务运行的日志,对应的该服务当中,会包 ...