HDU 2795 Billboard
Description
Input
下面n行每行一个整数 wi (1 <=wi <= 10^9) -
第i张广告的宽度.
Output
Sample Input
- 3 5 5
- 2
- 4
- 3
- 3
- 3
Sample Output
- 1
- 2
- 1
- 3
- -1
把高度当做线段,宽度当做价值,构建线段树
h<=10^9,乍看很难处理,但实际上由于n<=200000,需要用到的h最多200000,那么线段树的数组开80w足够用了
- #include<iostream>
- #include<cstdio>
- #include<cmath>
- #include<cstring>
- #include<algorithm>
- using namespace std;
- const int mxn=200010;
- int h,w,n;
- int wx;
- struct NODE{
- int l,r;
- int v;
- }e[900000];
- void Build(int l,int r,int num,int val){
- // e[num].l=l;
- // e[num].r=r; //发现用不到
- e[num].v=val;//初始化
- if(l==r)return;
- int mid=(l+r)/2;
- Build(l,mid,num<<1,val);
- Build(mid+1,r,num*2+1,val);
- return;
- }
- void update(int l,int r,int num,int val){
- if(l==r){
- e[num].v-=val;//更新该行空间
- printf("%d\n",l);//输出贴的行数
- return;
- }
- int mid=(l+r)/2;
- if(val<=e[num<<1].v) update(l,mid,num<<1,val);//能贴左边,优先贴左边
- else update(mid+1,r,(num<<1)+1,val);//否则贴在右边
- e[num].v=max(e[num<<1].v,e[num*2+1].v);
- }
- int main(){
- while(scanf("%d%d%d",&h,&w,&n)!=EOF){
- memset(e,0,sizeof(e));
- int i,j;
- h=min(h,mxn);
- Build(1,h,1,w);
- for(i=1;i<=n;i++){
- scanf("%d",&wx);
- if(wx>e[1].v){//小于目前所剩最长宽度,则贴不上
- printf("-1\n");
- continue;
- }
- update(1,h,1,wx);
- }
- }
- return 0;
- }
HDU 2795 Billboard的更多相关文章
- HDU 2795 Billboard(宣传栏贴公告,线段树应用)
HDU 2795 Billboard(宣传栏贴公告,线段树应用) ACM 题目地址:HDU 2795 Billboard 题意: 要在h*w宣传栏上贴公告,每条公告的高度都是为1的,并且每条公告都要 ...
- HDU 2795 Billboard(线段树的另类应用)
Billboard Time Limit: 20000/8000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- hdu 2795 Billboard(线段树+单点更新)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2795 Billboard Time Limit: 20000/8000 MS (Java/Others ...
- HDU 2795——Billboard——————【单点更新、求最小位置】
Billboard Time Limit:8000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit St ...
- HDU 2795 Billboard 【线段树维护区间最大值&&查询变形】
任意门:http://acm.hdu.edu.cn/showproblem.php?pid=2795 Billboard Time Limit: 20000/8000 MS (Java/Others) ...
- hdu 2795 Billboard 线段树单点更新
Billboard Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=279 ...
- HDU 2795 Billboard (线段树)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2795 题目大意:有一块h*w的矩形广告板,要往上面贴广告; 然后给n个1*wi的广告,要求把广告贴 ...
- HDU 2795 Billboard (线段树+贪心)
手动博客搬家:本文发表于20170822 21:30:17, 原地址https://blog.csdn.net/suncongbo/article/details/77488127 URL: http ...
- HDU 2795 Billboard(区间求最大值的位置update的操作在query里做了)
Billboard 通过这题,我知道了要活用线段树的思想,而不是拘泥于形式, 就比如这题 显然更新和查询放在一起很简单 但如果分开写 那么我觉得难度会大大增加 [题目链接]Billboard [题目类 ...
- HDU 2795 Billboard(线段树)
题目链接: 传送门 Billboard Time Limit: 2000MS Memory Limit: 32768 K Description At the entrance to the ...
随机推荐
- [java]java语言初探 servlet+jsp架构
<<head first java>> https://www.tutorialspoint.com/jsp/jsp_architecture.htm JSP Processi ...
- Java反射机制可以动态修改实例中final修饰的成员变量吗?
问题:Java反射机制可以动态修改实例中final修饰的成员变量吗? 回答是分两种情况的. 1. 当final修饰的成员变量在定义的时候就初始化了值,那么java反射机制就已经不能动态修改它的值了. ...
- 对《重建中国.NET生态系统》评论贴的总结
Neuzilla官方微信公众号:搜 架构师联盟 或 neuzilla,也可以扫下面二维码 在看了<重建中国.NET生态系统>的各种哭爹喊娘骂街的评论之后,我觉得哦,淫才确实很多,但是么真正 ...
- C#调用百度静态地图
来深圳一年多了,感觉深圳的IT氛围确实比长沙好,工作和生活节奏比较快,适合于学习.来深后一直在现在所在的公司,部门从开始4个人,发展到现在10来人了,感觉还是不错的. 发现自己很少写博客了,倒不是学得 ...
- js的浅拷贝和深拷贝
转载:http://www.jb51.net/article/91906.htm //深拷贝,并且把合并后的值放到第二个参数里 function deepCopy(p, c) { var c = c ...
- 使用 Eclipse 调试 Java 程序的技巧
你应该看过一些如<关于调试的N件事>这类很流行的帖子 .假设我每天花费1小时在调试我的应用程序上的话,那累积起来的话也是很大量的时间.由于这个原因,用这些时间来重视并了解所有使我们调试更方 ...
- C#实现清理系统内存
金山内存整理工具.360内存清理工具非常好用,可以将系统内存最小化,提升系统运行速度.其实这些事情C#也可以做到,原理就是对系统进程中的进程内存进行逐个优化. 网上大多推荐使用系统的SetProces ...
- MVC中使用Ajax提交数据 Jquery Ajax方法传值到action
Jquery Ajax方法传值到action <script type="text/javascript"> $(document).ready(function(){ ...
- 【JavaEE企业应用实战学习记录】requestListener
package sanglp.servlet; import javax.servlet.*; import javax.servlet.annotation.WebListener; import ...
- [转] easyui 获取数据表格中选中行的数据 Get selected row data from...
原文地址:http://my.oschina.net/meSpace/blog/41463 http://www.easyui.net/2010/06/easyui-tutorial-get-sele ...