HDOJ2795 Billboard【线段树】
Problem : 2795 ( Billboard ) Judge Status : Accepted
RunId : 5864258 Language : C Author : qq1203456195
/* 题意:高h宽w的公告栏,往上边贴1*L的公告,在能放的区域内按照最上最左的原则 张贴。 输出:每张公告贴分别在了第几行。 ========================================================================= 每个结点存储的是当前l-r行上能贴的公告的L的最大值Max if(Max>=L)说明可以放 {if(MaxL>=L)进入左子树;else进入右子树; } else {不能放,返回; } */ #include <stdio.h> #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 #define MAX 222222 int Max[MAX<<2],n,h,w;//公告数量,高度(使用的高度不会超过n),宽度 void build(int l,int r,int rt) {int m;Max[rt]=w;if(l==r){Max[rt]=w;return;}m=((l+r)>>1);build(lson);build(rson); } int max(int a,int b) { return a>=b?a:b;} int post(int p,int l,int r,int rt) {int m,ret=0;if (l==r){Max[rt]-=p;return l;}m=((l+r)>>1);if(Max[rt<<1]>=p)ret=post(p,lson);elseret=post(p,rson);Max[rt]=max(Max[rt<<1],Max[rt<<1|1]);return ret; } int main() {int i,p;while (~scanf("%d%d%d",&h,&w,&n)){if(h>n)h=n;build(1,h,1);for (i=0;i<n;i++){scanf("%d",&p);if(Max[1]<p)printf("-1\n");elseprintf("%d\n",post(p,1,h,1));}} return 0; }
转载于:https://www.cnblogs.com/CheeseZH/archive/2012/04/28/2475767.html
HDOJ2795 Billboard【线段树】相关推荐
- HDU 2795 Billboard (线段树+贪心)
HDU 2795 Billboard (线段树+贪心) 手动博客搬家:本文发表于20170822 21:30:17, 原地址https://blog.csdn.net/suncongbo/articl ...
- HDU - 2795 Billboard(线段树)
题目链接:点击查看 题目大意:给定一个高度为h,宽度为w的广告牌,接下来以此给出n个高度为1,宽度为w的广告,我们需要将广告优先贴在最上边.最左边,问给出的每一个广告应该贴在哪一行,若没有位置贴了则输 ...
- hdu2795 Billboard 线段树
题意: 给出一块h*w的广告牌,还有n张1*u的海报,海报尽量往上,左边的位置张贴,问每一张海报能贴的多高. 线段树单点修改. 注意:因为1 <= h,w <= 10^9; 1 <= ...
- HDU2795 Billboard 线段树
这是一道简单的线段树,只需要考虑好我们建树的方式即可! 我们以高h来建树,点的权值为W,通过来维护区间的最大值,我们很快就能查找到编号最小的点切大于等于wi..明白之后就是一道简单的线段树单点更新,维 ...
- HDU_2795 Billboard(线段树)
/*题意:输出每次贴上的海报所在的行号,行号为1...h; 开始拿到这题没思路,后来问了问本校的大牛,终于找到思路.这题是按high建树,结构体中定义一个len变量,存放当前该结点的空闲长度.某结点的 ...
- 线段树——思维(Codeforces 339D Xenia and Bit Operations/Billboard HDU - 2795)
Codeforces 339D Xenia and Bit Operations vj地址 题意:给出2的n次方个数,每次将现在这个序列中相邻的两个数运算后合并为一个数,得到一个新的序列,这个新序列的 ...
- Billboard(海报粘贴简单的线段树)
题目来源:[NWPU][2014][TRN][13]线段树第一讲 G 题 http://vjudge.net/contest/view.action?cid=50850#problem/G 作者:n ...
- 【HDU2795】Billboard(线段树)
大意:给一个h*w的格子,然后给出多个1*w的板子往格子里面填,如果有空间尽量往上一行填满,输出行数,无法填补,则输出-1: 可以使用线段树转化问题,将每一排的格子数目放到每一个叶子节点上,然后每有一 ...
- 数据结构---线段树
线段树 转载请注明出处,谢谢!http://blog.csdn.net/metalseed/article/details/8039326 持续更新中··· 一:线段树基本概念 1:概述 线段树 ...
- 【转】线段树题目 汇总 讲解(by not only success)
转载自:http://www.notonlysuccess.com/ 非常喜欢他的代码风格以及简洁的思路,感谢notonlysuccess! PS:他的个人网站好像是上不去了-.- 线段树 很早前写的 ...
最新文章
- 云服务器怎么添加虚拟内存,云服务器怎么添加虚拟内存
- Android应用安全开发之浅谈加密算法的坑
- python四种数值交换方法
- 详解 nginx 配置文件及构建 web 虚拟主机
- ubuntu14.04安装linux公社,Ubuntu 14.04下安装IT++
- notepad++ 查找引用(Find Reference)(适用于c c++及各类脚本比如lua、python等)
- mosquitto鉴权插件的开发与说明(一)
- 如何学好python基础_零基础如何学好Python开发?
- 惊恐的市场洗牌网游市场诞生危机论
- 数据意识崛起,从企业应用看BI软件的未来发展 1
- MySql中,复制旧表结构到新表
- Python关键点常识
- 海外服务器配置多少带宽比较合适?
- 基于opencv答题卡识别
- MySQL入门笔记整理
- Disable access to external entities in XML parsing
- matlab没有关联m文件,matlab 不关联m文件的解决方法
- 腾讯派息式减持京东,“伯克希尔”的投资策略变的逻辑是?
- 糖友低碳水、高蛋白饮食可行吗
- sizeof 的小知识