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]]]\) ...
随机推荐
- mongo语句优化分析
参考原文:http://www.mongoing.com/eshu_explain3 理想的查询状态由以下两种 普通查询: nReturned=totalKeysExamined & tota ...
- 查看在线EBS用户的相关信息
--查看在线EBS用户的相关信息 SELECT PAP.FULL_NAME, FU.USER_NAME, FAT.APPLICATION_NAME, FRT.RESPONSIBILITY_NAME, ...
- Oracle数据类型总结
一 字符串类型 1.1:CHAR类型 CHAR(size [BYTE | CHAR]) CHAR类型,定长字符串,会用空格填充来达到其最大长度.非NULL的CHAR(12)总是包含12字节信息.CHA ...
- NOIP200407合唱队形+最长上升子序列O(n^2)详解
合唱队形解题报告 2016-05-12 4:30——6:45 NOIP200407合唱队形 难度级别:A: 运行时间限制:1000ms: 运行空间限制:256000KB: 代码长度限制:20000 ...
- [置顶] 1D1D动规优化初步
例题一: 货物运输,大意: 给出N个点的坐标与需要你送过去的钱数(第一个点不需要钱),身上带钱的数目有最大值,由初始在的1点,按顺序经历每个点(中途可以回1点,回去钱就满了),问最小走的路程是多少(最 ...
- web跨页弹窗选值
最近在项目中看到这样一种效果——点击当前网页文本框,然后弹出一个缩小的网页,并在网页里选择或填写数据,然后又返回当前网页,小网页关闭.感觉非常不错,其实在以前网上也看见过,只是当时没有留心.今天抽时间 ...
- ARM多核处理器启动过程分析【转】
转自:http://blog.csdn.net/qianlong4526888/article/details/27695173 版权声明:本文为博主原创文章,未经博主允许不得转载. 说明: 该流程图 ...
- CSS修改方法
1.在IE中,大部分情况下默认margin = 0px padding = 0px,但在Chrome中需要写明 在css.css文件开头加上(要加在最上面) html,body,ul,ol,li,ta ...
- Hibernate,JPA注解@OneToOne_JoinColumn
一对一(One-to-one),外键关联 用例代码如下: 数据库DDL语句 1,CAT表 create table CAT ( id CHAR) not null, create_time ), up ...
- git 检出
1 git checkout branch 检出branch分支.要完成图8-1三个步骤,更新HEAD已指向新分支 以及用branch指向的树更新暂存区和工作区 2 git checkout 显示出工 ...