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]]]\) ...
随机推荐
- oracle的会话(session)
会话(session)是oracle服务器对数据库连接用户记录的一种手段. oracle提供了v_$session的视图存储当前数据库的会话,查询时用v_$session 或v$session sql ...
- 夺命雷公狗—angularjs—13—post参数的接收发送
我们强悍的angularjs为我们不仅仅提供了他的get接收方式,而且也有post的接收方式,我们现在做一个模拟接收后端传递过来的json的数据: <?php $arr = ['user'=&g ...
- 夺命雷公狗---DEDECMS----6快速入门之总结篇
我们dedecms四大表分别是: dede_channeltype(模型表) dede_arctype(栏目表) dede_archives(文章主表) dede_addonXXXX(附加表) 使用d ...
- Web服务器处理HTTP压缩之gzip、deflate压缩
现如今在处理http请求的时候,由于请求的资源较多,如果不启用压缩的话,那么页面请求的流量将会非常大.启用gzip压缩,在一定程度上会大大的提高页面性能. 目录 一.什么是gzip 二.什么是de ...
- Sql Server Analysis Service 处理时找到重复的属性键、找不到属性键错误(转载)
这是两个非常常见的SSAS处理异常,网上也能找到很多文章讲解决办法,但很少见关于异常原因的分析,先来看看第一个" OLAP 存储引擎中存在错误: 处理时找到重复的属性键",一个维度 ...
- 【海岛帝国系列赛】No.4 海岛帝国:LYF的太空运输站
50212228海岛帝国:LYF的太空运输站 [试题描述] 最近,“购物券”WHT在“药师傅”帝国资源大会上提出了“SSTS”太空运输站计划.由于恐怖分子前些日子刚猖狂完,炸毁高楼无数,YSF不得不执 ...
- ubuntu屏幕分辨率问题
今天在ubuntu下工作时突然屏幕上下各出现了一个大概2厘米的黑条,感觉屏幕被横向拉长了,莫名其妙,开始以为简单的调整下分辨率就好了,在系统设置显示里面发现分辨率只有两个可选参数,并且对象为未知,由于 ...
- 图解 交集(join)和 合并(union)
假设我们有两张表. Table A 是左边的表. Table B 是右边的表. 其各有四条记录,其中有两条记录是相同的,如下所示: id name id name 1 Pirate ...
- Oracle集合运算符 交集 并集 差集
集合运算符:UNION/UNION ALL 并集,INTERSECT 交集,MINUS 差集 一.union求并集,公共部分只有包含一次 例:求emp表ename中含’A‘或含有‘M’ SQL&g ...
- [转]Win7下安装配置sharepoint server 2010
转自:http://blog.sina.com.cn/s/blog_5d93d7aa010151lp.html 要开发SharePoint 2010应用程序,开发人员必须构建一个SharePoint ...