hdu 2795 Billboard (线段树,优先找满足条件的坐标较小的)
来源:互联网 发布:适合拍人像的相机知乎 编辑:程序博客网 时间:2024/06/05 08:50
Billboard
Time Limit:8000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u
Description
在学校的入口处有一个巨大的矩形广告牌,高为h,宽为w。所有种类的广告都可以贴,比如ACM的广告啊,还有餐厅新出了哪些好吃的,等等。。
在9月1号这天,广告牌是空的,之后广告会被一条一条的依次贴上去。
每张广告都是高度为1宽度为wi的细长的矩形纸条。
贴广告的人总是会优先选择最上面的位置来帖,而且在所有最上面的可能位置中,他会选择最左面的位置,而且不能把已经贴好的广告盖住。
如果没有合适的位置了,那么这张广告就不会被贴了。
现在已知广告牌的尺寸和每张广告的尺寸,求每张广告被贴在的行编号。
Input
多组样例,不超过40个。
对每组样例,第一行包含3个整数h,w,n(1 <= h,w <= 10^9; 1 <= n <= 200,000)-广告牌的尺寸和广告的个数。
下面n行每行一个整数 wi (1 <=wi <= 10^9) - 第i张广告的宽度.
下面n行每行一个整数 wi (1 <=wi <= 10^9) - 第i张广告的宽度.
Output
对每张广告,输出它被贴在的行编号(是1到h之间的数),顶部是第一行。如果某广告不能被贴上,则输出-1。
Sample Input
3 5 524333
Sample Output
1213-1
Hint
这个hint实在是。。。
考虑到最多只有200000张海报,那么最多建n=200000的线段树就行了
#include<cstring>#include<string>#include<iostream>#include<queue>#include<cstdio>#include<algorithm>#include<map>#include<cstdlib>#include<cmath>#include<vector>//#pragma comment(linker, "/STACK:1024000000,1024000000");using namespace std;#define INF 0x3f3f3f3f#define maxn 200000*4int a[maxn];int h,w,n;struct node{ int l,r; int left;}T[maxn];void init(int l,int r,int k){ T[k].l=l; T[k].r=r; T[k].left=w; if(l==r) return ; int mid=(l+r)>>1; init(l,mid,2*k); init(mid+1,r,2*k+1);}int ok;void Insert(int d,int k){ if(T[k].left<d) return ; if(T[k].l==T[k].r) { ok=T[k].l; T[k].left-=d; return ; } int mid=(T[k].l+T[k].r)>>1; if(T[2*k].left>=d) Insert(d,2*k); else Insert(d,2*k+1); T[k].left=max(T[2*k].left,T[2*k+1].left);}int main(){ while(scanf("%d%d%d",&h,&w,&n)!=EOF) { for(int i=1;i<=n;i++) scanf("%d",&a[i]); init(1,min(h,200000),1); for(int i=1;i<=n;i++) { ok=0; Insert(a[i],1); if(!ok) printf("-1\n"); else printf("%d\n",ok); } } return 0;}
0 0
- hdu 2795 Billboard (线段树,优先找满足条件的坐标较小的)
- HDU 2795 Billboard(线段树的另类应用)
- hdu 2795 Billboard(线段树 求最值的位置)
- 【解题报告】 HDU 2795 Billboard -- 线段树的应用
- HDU-2795 Billboard (线段树)RE的教训!
- HDU 2795 Billboard——特殊查询的线段树
- hdu 2795 Billboard(线段树)
- hdu - 2795 - Billboard(线段树)
- hdu 2795 Billboard(线段树)
- [ACM] hdu 2795 Billboard (线段树)
- HDU 2795 Billboard(线段树)
- hdu 2795 Billboard(线段树版)
- hdu 2795 Billboard(线段树版)
- hdu 2795 Billboard(线段树)
- HDU-2795-Billboard (线段树)
- 【HDU】 2795 Billboard(线段树)
- HDU 2795 Billboard(线段树)
- HDU 2795 Billboard(简单线段树)
- MFC中自定义消息
- JAVA集合--Map
- Android Service完全解析,关于服务你所需知道的一切(下)
- 远程推送
- iOS所有框架总览与介绍
- hdu 2795 Billboard (线段树,优先找满足条件的坐标较小的)
- 关于JS的prototype
- java与C#的简单比较
- S3C命令摘要
- Ajax小知识总结
- leetcode笔记--Valid Palindrome
- word中表格相关内容
- 获得activity的类名
- MYSQL-- 每半月一个分区,自动维护 (顶)