HDU_2795 Billboard(线段树)
/*题意:输出每次贴上的海报所在的行号,行号为1...h; 开始拿到这题没思路,后来问了问本校的大牛,终于找到思路。这题是按high建树,结构体中定义一个len变量,存放当前该结点的空闲长度。某结点的父结点存放其子结点的最大空闲长度值; 比如(len = 10): 1 len = max(len2,len3) / \ 2 3 (len = max(len4,len5)) / \ / \ 4 5 6 7 (len = 6) (len = 7) 这样每次更新时,如果父结点的node[t].len < w,则父结点之下的结点都不符合条件,可以跳过。*/ /*My Code:*/ #include <iostream>#include <cstdio>#define L(t) t << 1#define R(t) t << 1 | 1 using namespace std; const int N = 200005; struct node{int l, r;int w;}node[N*4]; int w, ans; void creat(int t, int l, int r){ node[t].l = l; node[t].r = r; node[t].w = w; if(l == r) return;int mid = (l + r) >> 1; creat(L(t), l, mid); creat(R(t), mid+1, r);} void updata(int t, int len){if(node[t].l == node[t].r) {if(node[t].w < len)return; node[t].w -= len; ans = node[t].l;return; } if(len <= node[L(t)].w) updata(L(t), len); else updata(R(t), len); node[t].w = node[L(t)].w > node[R(t)].w ? node[L(t)].w : node[R(t)].w;} int main(){//freopen("data.in", "r", stdin); int h, n, i, b;while(~scanf("%d%d%d", &h, &w, &n)) {if(h > n) h = n; //注意这里,如果h>n则n以后的数都更新不到,最大建树建到n就可以。 creat(1, 1, h);for(i = 1; i <= n; i++) { scanf("%d", &b); ans = 0; updata(1, b); printf("%d\n", ans ? ans : -1); } }return 0;}
HDU_2795 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..明白之后就是一道简单的线段树单点更新,维 ...
- 线段树——思维(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 Studio: Debug Android SDK Source Code
- python测试之道pdf百度云_Python测试之道——笔记1
- 【推荐系统算法学习笔记1】基本架构、专有名词、构建流程
- php配置mysql集群_【mysql集群】mysql集群配置
- 思维认知-读mindhacks杂记
- MYISAM表的.frm、MYI损坏,丢失的修复方法
- Python使用random实现双色球、大乐透随机选号
- 计算机网络 故障处理,浅析计算机网络常见故障处理及维护方法
- 区块链入门教程(1)--概述
- 5G 理论峰值速率是怎么计算的?
- MySQL 文件结构、逻辑架构及 sql 执行流程分析作者:Java后端架构
- 一些Pixel手机的使用技巧
- html手机怎么刷机,一键刷机,小编教你手机怎么一键刷机
- 仿脉脉PHP源码,php,mysql_如何实现类似脉脉网的二维人际关系,php,mysql,算法,社区,社交 - phpStudy...
- c语言中signal函数详细解释说明
- 从前端到未来,前端发展闲聊
- 互联网时代,企业经营管理面临的挑战有哪些?
- Day036 《电影院售票系统》项目全码
- 【厚积薄发系列】C++项目总结16—单例模式释放时机导致的崩溃问题分析
- 12V将路由器网口烧了
热门文章
- VTK:Snippets之RestoreSceneFromFile
- VTK:网格之MatrixMathFilter
- OpenGL starfield星空的实例
- OpenGL绘制Triangle三角形
- QT的QTechnique类的使用
- QT的QQmlComponent类的使用
- QT的QListIterator类的使用
- C++全局函数做友元
- matlab转向梯形优化设计,转向梯形优化设计matlab程序
- mysql-8.0.14-winx64,mysql-8.0.15-winx64 解压版安装教程及退出的三种方式