BZOJ 1513 [POI2006]Tet-Tetris 3D
题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1513
题意:三维空间,有一些立方体在垂直下落。立方体的左下角坐标(x,y)以及长宽高d,s,w。A落在B上时将停止下落(即使A只有一小块跟B重合就算A会落在B上)。求最后最大的高度。
思路:每次覆盖时找到区域最大值,加上当前立方体的高度。
int xL,xR,yL,yR;
int h;
int n,m;
struct Seg
{
int f[N<<1],s[N<<1];
void insert(int t,int L,int R,int ll,int rr,int h)
{
f[t]=max(f[t],h);
if(L==ll&&R==rr)
{
s[t]=max(s[t],h);
return;
}
int M=(L+R)>>1;
if(rr<=M) insert(t<<1,L,M,ll,rr,h);
else if(ll>M) insert(t<<1|1,M+1,R,ll,rr,h);
else
{
insert(t<<1,L,M,ll,M,h);
insert(t<<1|1,M+1,R,M+1,rr,h);
}
}
int query(int t,int L,int R,int ll,int rr)
{
if(L==ll&&R==rr) return f[t];
int ans=s[t];
int M=(L+R)>>1;
if(rr<=M) upMax(ans,query(t<<1,L,M,ll,rr));
else if(ll>M) upMax(ans,query(t<<1|1,M+1,R,ll,rr));
else
{
upMax(ans,query(t<<1,L,M,ll,M));
upMax(ans,query(t<<1|1,M+1,R,M+1,rr));
}
return ans;
}
};
struct Seg1
{
Seg f[N<<1],s[N<<1];
void insert(int t,int L,int R,int ll,int rr)
{
f[t].insert(1,1,m,yL,yR,h);
if(L==ll&&R==rr)
{
s[t].insert(1,1,m,yL,yR,h);
return;
}
int M=(L+R)>>1;
if(rr<=M) insert(t<<1,L,M,ll,rr);
else if(ll>M) insert(t<<1|1,M+1,R,ll,rr);
else
{
insert(t<<1,L,M,ll,M);
insert(t<<1|1,M+1,R,M+1,rr);
}
}
int query(int t,int L,int R,int ll,int rr)
{
if(L==ll&&R==rr) return f[t].query(1,1,m,yL,yR);
int ans=s[t].query(1,1,m,yL,yR);
int M=(L+R)>>1;
if(rr<=M) upMax(ans,query(t<<1,L,M,ll,rr));
else if(ll>M) upMax(ans,query(t<<1|1,M+1,R,ll,rr));
else
{
upMax(ans,query(t<<1,L,M,ll,M));
upMax(ans,query(t<<1|1,M+1,R,M+1,rr));
}
return ans;
}
};
Seg1 a;
int Q;
int main()
{
RD(n,m,Q);
while(Q--)
{
int d,s,w,x,y;
scanf("%d%d%d%d%d",&d,&s,&w,&x,&y);
xL=x+1;
xR=x+d;
yL=y+1;
yR=y+s;
h=a.query(1,1,n,xL,xR);
h+=w;
a.insert(1,1,n,xL,xR);
}
xL=yL=1;
xR=n;
yR=m;
int ans=a.query(1,1,n,1,n);
printf("%d\n",ans);
}
BZOJ 1513 [POI2006]Tet-Tetris 3D的更多相关文章
- bzoj 1513 [POI2006]Tet-Tetris 3D(二维线段树)
1513: [POI2006]Tet-Tetris 3D Time Limit: 30 Sec Memory Limit: 162 MBSubmit: 540 Solved: 175[Submit ...
- bzoj 1513 POI2006 Tet-Tetris 3D 二维线段树+标记永久化
1511: [POI2006]OKR-Periods of Words Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 351 Solved: 220[S ...
- bzoj1513【POI2006】Tet-Tetris 3D
1513: [POI2006]Tet-Tetris 3D Time Limit: 30 Sec Memory Limit: 162 MB Submit: 733 Solved: 245 [Subm ...
- 模拟 - BZOJ 1510 [POI2006] Kra-The Disks
BZOJ 1510 [POI2006] Kra-The Disks 描述 Johnny 在生日时收到了一件特殊的礼物,这件礼物由一个奇形怪状的管子和一些盘子组成. 这个管子是由许多不同直径的圆筒(直径 ...
- 【BZOJ】1513: [POI2006]Tet-Tetris 3D
题意 给\(n(1 \le n \le 20000)\)个立方体\((x, y, z)\),依次落下.求所有立方体落下完了以后最高的高度. 分析 平面求最大值,平面更新最大值. 题解 二维线段树走起, ...
- bzoj 1510 [POI2006]Kra-The Disks 二分
1510: [POI2006]Kra-The Disks Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 466 Solved: 272[Submit][ ...
- bzoj 1520 [POI2006]Szk-Schools 费用流
[POI2006]Szk-Schools Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 743 Solved: 381[Submit][Status][ ...
- bzoj 1517 [POI2006]Met 贪心
[POI2006]Met Time Limit: 15 Sec Memory Limit: 162 MBSubmit: 203 Solved: 108[Submit][Status][Discus ...
- BZOJ 1511: [POI2006]OKR-Periods of Words
Description 求一个最长周期. Sol KMP. 一个点的最短周期就是 \(i-next[i]\) 此外 \(i-next[next[i]],i-next[next[next[i]]]\) ...
随机推荐
- android studio1.0 for Mac环境搭建与demo运行(手动下载gradle,科学上google) 转载
http://blog.csdn.net/allenffl/article/details/41957907 官网下载 http://developer.android.com/sdk/install ...
- zw版【转发·台湾nvp系列Delphi例程】HALCON Cast 使用方式
zw版[转发·台湾nvp系列Delphi例程]HALCON Cast 使用方式 procedure TForm1.Button1Click(Sender: TObject);var img, img1 ...
- Windows应用层网络模块扫盲
说到Windows应用层网络通信不得不提winsock,winsock是工作在TCP/IP层的应用层(TCP/IP层分为主机到网络层[比特].网络互联层[数据帧].传输层[数据包].应用 ...
- 《C语言入门很简单》欢乐槽点
p24 在C语言中,有三种基本的数据类型供选择,它们有着不同的精度和广度,可以根据自己的需要选择合适的.这三种数据类型分别是整型.浮点型.字符型,它们可谓是C语言数据的三大变形金刚. p237 评:自 ...
- SqlServer 中如何查看某一个Sql语句是复用了执行计划,还是重新生成了执行计划
我们知道SqlServer的查询优化器会将所执行的Sql语句的执行计划作缓存,如果后续查询可以复用缓存中的执行计划,那么SqlServer就会为后续查询复用执行计划而不是重新生成一个新的执行计划,因为 ...
- HttpHandler和ashx要实现IRequiresSessionState接口才能访问Session信息(转载)
通常我们经常,通过session判定用户是否登录.还有一些临时的.重要的数据也尝尝存放在Session中. 在页面我们很容易的得到Session的值,但在类中就会遇到一些问题.也知道通过下面的方法得到 ...
- c# 操作xml题目
download! 1.新建一个文本文件,命名为:projects.txt. 2.将后缀名改为projects.xml. 3.用记事本编辑该文件.使用utf-8编码.内容如下: <?xml v ...
- Objective-C语言控制语句
• 分支语句• 循环语句• 跳转语句 Objective-C中的控制语句有以下几类:• 分支语句:if-else, switch• 循环语句:while, do-while, for• 与程序转移有关 ...
- Tomcat端口被占用快速解决方案
在dos下,输入 netstat -ano|findstr 8080 //说明:查看占用8080端口的进程 显示占用端口的进程 taskkill /pid 6856 /f //说明,运行 ...
- Linux内核配置机制(make menuconfig 、Kconfig、Makefile)讲解【转】
本文转载自:http://www.codexiu.cn/linux/blog/34801/ 前面我们介绍模块编程的时候介绍了驱动进入内核有两种方式:模块和直接编译进内核,并介绍了模块的一种编译方式—— ...