hdu2795 线段树
//Accepted 6396 KB 3046 ms
//线段树
//由于n只有200000,我们可以知道,当h>200000时,大于200000的部分是没有用的
//所以我们可以用n来创建线段树
//我的思路是:
//维护一个已用区段的线段树
//用len表示当前已用的区段
//当需要贴一个宽度为wi的announcement时,先判断已用的区段能不能放下,如果不能这考虑len+1 (len+1<n && len+1<h)
//如果上述两种情况都不能放下,这放不下,output -1;
//test:
//3 6 3
//4
//3
//2
//answer:1 2 1
#include <cstdio>
#include <cstring>
#include <iostream>
#include <queue>
#include <cmath>
#include <algorithm>
using namespace std;
/**
* This is a documentation comment block
* 如果有一天你坚持不下去了,就想想你为什么走到这儿!
* @authr songt
*/
;
int max(int a,int b)
{
return a>b?a:b;
}
struct node
{
int l,r;
int tmax;
}f[imax_n*];
int n,width,height;
int w;
void build(int t,int l,int r)
{
f[t].l=l;
f[t].r=r;
f[t].tmax=width;
if (l==r)
{
return ;
}
;
build(*t,l,mid);
build(*t+,mid+,r);
}
int query(int t,int l,int r)
{
if (f[t].l==l && f[t].r==r)
{
return f[t].tmax;
}
;
*t,l,r);
else
{
*t+,l,r);
*t,l,mid),query(*t+,mid+,r));
}
}
void update(int t,int l,int c)
{
if (f[t].l==l && f[t].r==l)
{
f[t].tmax=f[t].tmax-c;
return ;
}
;
*t,l,c);
*t+,l,c);
f[t].tmax=max(f[*t].tmax,f[*t+].tmax);
}
int queryid(int t,int sw)
{
if (f[t].l==f[t].r && f[t].tmax>=sw)
{
return f[t].l;
}
*t].tmax>=sw) *t,sw);
*t+,sw);
}
void slove()
{
;
;i<n;i++)
{
scanf("%d",&w);
if (w>width)
{
printf("-1\n");
continue;
}
,,len);
if (temp_w>=w)
{
,w);
printf("%d\n",t);
update(,t,w);
}
else
{
if (len<height && len<n)
{
printf();
update(,len+,w);
len++;
}
else
{
printf("-1\n");
}
}
}
}
int main()
{
while (scanf("%d%d%d",&height,&width,&n)!=EOF)
{
build(,,n);
slove();
}
;
}
//Accepted 6396 KB 2250 ms
#include <cstdio>
#include <cstring>
#include <iostream>
#include <queue>
#include <cmath>
#include <algorithm>
using namespace std;
/**
* This is a documentation comment block
* 如果有一天你坚持不下去了,就想想你为什么走到这儿!
* @authr songt
*/
int max(int a,int b)
{
return a>b?a:b;
}
int min(int a,int b)
{
return a<b?a:b;
}
struct node
{
int l,r;
int tmax;
}f[*];
int n,w,h;
void build(int t,int l,int r)
{
f[t].l=l;
f[t].r=r;
f[t].tmax=w;
if (l==r) return ;
;
build(*t,l,mid);
build(*t+,mid+,r);
}
int query(int t,int c)
{
if (f[t].l==f[t].r && f[t].tmax>=c)
{
f[t].tmax=f[t].tmax-c;
return f[t].l;
}
;
;
*t].tmax>=c) res=query(*t,c);
else
*t+].tmax>=c) res=query(*t+,c);
f[t].tmax=max(f[*t].tmax,f[*t+].tmax);
return res;
}
void slove()
{
int x;
;i<=n;i++)
{
scanf("%d",&x);
].tmax>=x)
{
printf(,x));
}
else
{
printf("-1\n");
}
}
}
int main()
{
while (scanf("%d%d%d",&h,&w,&n)!=EOF)
{
build(,,min(h,n));
slove();
}
;
}
hdu2795 线段树的更多相关文章
- hdu2795 线段树 贴广告
Billboard Time Limit: 20000/8000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- hdu2795线段树
//=========================================== //segment tree //final version //by kevin_samuel(fenic ...
- hdu2795(线段树单点更新&区间最值)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2795 题意:有一个 h * w 的板子,要在上面贴 n 条 1 * x 的广告,在贴第 i 条广告时要 ...
- HDU2795线段树入门 简单查询和修改
http://acm.hdu.edu.cn/showproblem.php?pid=2795 #include<iostream> using namespace std; ; int h ...
- 线段树-hdu2795 Billboard(贴海报)
hdu2795 Billboard 题意:h*w的木板,放进一些1*L的物品,求每次放空间能容纳且最上边的位子 思路:每次找到最大值的位子,然后减去L 线段树功能:query:区间求最大值的位子(直接 ...
- HDU-------(2795)Billboard(线段树区间更新)
Billboard Time Limit: 20000/8000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- 【HDU2795】Billboard(线段树)
大意:给一个h*w的格子,然后给出多个1*w的板子往格子里面填,如果有空间尽量往上一行填满,输出行数,无法填补,则输出-1: 可以使用线段树转化问题,将每一排的格子数目放到每一个叶子节点上,然后每有一 ...
- 【线段树求最靠前】【HDU2795】【Billboard】
题意: 有一个H*W的广告牌,当插入一个广告时(1*Wi),问最靠前的插入方式是什么 新生赛有个类似的题目,可惜当时居然没水过去. 果断用线段树做 以H为线段 建树,存[l,r]中最大的宽度,因为区间 ...
- HDU2795 billboard【转化为线段树。】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2795 hhanger大神的题目,水题都得有点思维. 题意:h*w的木板,放进一些1*L的物品,求每次放 ...
随机推荐
- 通用 PE 工具箱1.9.6(XP内核)by Uepon(李培聪)
通用 PE 工具箱1.9.6(XP内核)by Uepon(李培聪)官网:http://hi.baidu.com/uepon?page=21.8版论坛帖子:http://bbs.wuyou.net/fo ...
- PC-1500收集整理记
目录 第1章计算器 1 1.1 存储卡 2 1.2 取出"牛皮糖" 4 1.3 打磨键盘按钮 6 1.4 通电 7 第2章底座 10 2.1 去 ...
- ajax再接触
贴三个目前写的已经工作了的ajax,并且给出备注: 1.这是第一个ajax以及它的接口文档,需要注意的是1.因为返回数据是xml所以多加了contentType:"application/x ...
- 5个开发人员不应该错过的最好跨平台PHP编辑器
IDE(集成开发环境)或换句话说PHP编辑器是开发人员在构建移动或Web应用必不可少的工具.在这篇文章中,我们将讨论有关PHP编辑器并分享5个最好的跨平台的PHP编辑器. 1. NetBeans Ne ...
- NSInternalInconsistencyException: loaded the "XXXView" nib but the view outlet was not set
运行过程中App崩溃,报错如标题. 原因: viewController的view没有绑定xib的view. 解决方法: 在File's Owner中将view与viewController的view ...
- IDOC创建、发送、接收及程序代码[转]
什么是IDOC,以及IDOC的步骤 创建IDOC: 第一步:WE31 创建IDOC所包含的字段. 第二步:WE30 创建IDOC 把Segment分配给IDOC 第三步:WE81 创 ...
- Oracle11g中ORA-01790
问题源于群里有人问如何让查询的结果值+1,方法其实很简单,直接在SQL语句中+1就可以,如果有空可以用NVL处理. 但是测试的时候我使用了UNION ALL(测试的字段是varchar2类型),结果报 ...
- BZOJ一天提交 51纪念(二)
今天作死又交了一发呢...于是屯题就全用完啦~ 有一次拷错CE,还有一次本来的程序就是错的的说... 可是我希望看到我努力的人并不会看到我的努力呢,尽管如此一个人也要坚持走到底哦,就如同这不完美的提交 ...
- 使用nexus搭建maven仓库(本地私服)
我们在使用maven的时候,对于项目所依赖的jar包,maven默认会在中央仓库下载jar包,到本地的磁盘目录(如果没有配置则是用户目录下/.m2/repository文件夹下).如果公司内部搭了一个 ...
- MongoDB相关资料
MongoDB的介绍及安装参考http://www.cnblogs.com/lipan/archive/2011/03/08/1966463.html 安装过程: 第一步:下载安装包:官方下载地址←单 ...