hdu 2795 线段树(纵向)
注意h的范围和n的范围,纵向建立线段树
题意:h*w的木板,放进一些1*L的物品,求每次放空间能容纳且最上边的位子
思路:每次找到最大值的位子,然后减去L
线段树功能:query:区间求最大值的位子(直接把update的操作在query里做了)
3 5 5
2
4
3
3
3
1
2
1
3
-1
2015-05-15
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<queue>
#include<map>
using namespace std;
#define MOD 1000000007
const int INF=0x3f3f3f3f;
const double eps=1e-;
#define cl(a) memset(a,0,sizeof(a))
#define ts printf("*****\n");
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
#define root 1,n,1
#define mid ((l+r)>>1)
const int MAXN=;
int n,m,t;
int num[MAXN],w,h;
struct Node
{
int l,r;
int sum;
}node[MAXN<<];
void build(int l,int r,int rt)
{
node[rt].l=l;
node[rt].r=r;
node[rt].sum=w;
if(l==r) return;
build(lson);
build(rson);
}
int query(int val,int rt)
{
if(node[rt].l==node[rt].r)
{
node[rt].sum-=val;
return node[rt].l;
}
int ret=;
if(node[rt<<].sum>=val) ret=query(val,rt<<);
else ret=query(val,rt<<|);
node[rt].sum=max(node[rt<<|].sum,node[rt<<].sum);
return ret;
}
int main()
{
int i,j,k,tt;
#ifndef ONLINE_JUDGE
freopen("1.in","r",stdin);
#endif
while(~scanf("%d%d%d",&h,&w,&n))
{
if(h>n) h=n;
int a;
build(,h,);
for(i=;i<=n;i++)
{
scanf("%d",&a);
if(node[].sum<a) printf("-1\n");
else printf("%d\n",query(a,));
}
}
}
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<queue>
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
using namespace std;
const int maxn=;
int sum[maxn<<];
int n,m,t,h,w;
void pushup(int rt)
{
sum[rt]=max(sum[rt<<],sum[rt<<|]);
}
void build(int l,int r,int rt)
{
sum[rt]=w;
if(l==r) return;
int m=(l+r)>>;
build(lson);
build(rson);
}
int query(int add,int l,int r,int rt)
{
if(l==r)
{
sum[rt]-=add;
return l;
}
int m=(l+r)>>;
int ret;
if(sum[rt<<]>=add)
{
ret=query(add,lson);
}
else ret=query(add,rson);
pushup(rt);
return ret;
}
int main()
{
int i,j,k;
//freopen("1.in","r",stdin);
while(scanf("%d%d%d",&h,&w,&n)!=EOF)
{
if(h>n) h=n;
build(,h,);
for(i=;i<=n;i++)
{
scanf("%d",&k);
if(sum[]<k) printf("-1\n");
else printf("%d\n",query(k,,h,));
}
}
return ;
}
hdu 2795 线段树(纵向)的更多相关文章
- hdu 2795 线段树(二维问题一维化)
Billboard Time Limit: 20000/8000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- HDU 2795 线段树单点更新
Billboard Time Limit: 20000/8000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- HDU 2795 线段树区间最大值,单点更新+二分
Billboard Time Limit: 20000/8000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- hdu 2795 线段树
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2795 #include <cstdio> #include <cmath> # ...
- HDU 2795 (线段树 单点更新) Billboard
h*w的木板,放进一些1*L的物品,求每次放空间能容纳且最上边的位子. 每次找能放纸条而且是最上面的位置,询问完以后可以同时更新,所以可以把update和query写在同一个函数里. #include ...
- hdu 2795线段树
#include<stdio.h> #define N 200005 int h,w,n; struct node { int x,y,max; }a]; int mmax(int e,i ...
- hdu 5877 线段树(2016 ACM/ICPC Asia Regional Dalian Online)
Weak Pair Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total ...
- hdu 3974 线段树 将树弄到区间上
Assign the task Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- hdu 3436 线段树 一顿操作
Queue-jumpers Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) To ...
随机推荐
- iOS欢迎界面Launch Screen动态加载广告
有许多应用程序在打开的时候,欢迎界面会加载一张连网获取的广告图片或者显示一组动画,这样的效果是如何做到的呢?下面给大家介绍一种简单的实现加载广告的方式. 程序运行起来,欢迎界面之后,会进入AppDel ...
- Cannot attach the file as database 'membership'.
Cannot attach the file 'D:\GitHome\cae\CAE\App_Data\membership.mdf' as database 'membership'. 说明: 执行 ...
- MySQL索引的创建、删除和查看
MySQL索引的创建.删除和查看 此文转自http://blogold.chinaunix.net/u3/93470/showart_2001536.html 1.索引作用 在索引列上,除了上面提到的 ...
- XSS 自动化检测 Fiddler Watcher & x5s & ccXSScan 初识
一.标题:XSS 自动化检测 Fiddler Watcher & x5s & ccXSScan 初识 automated XSS testing assistant 二.引言 ...
- SQL存储过程概念剖析
一.SQL存储过程的概念,优点及语法 定义:将常用的或很复杂的工作,预先用SQL语句写好并用一个指定的名称存储起来, 那么以后要叫数据库提供与已定义好的存储过程的功能相同的服务时,只需调用execut ...
- javax.inject中@Inject、@Named、@Qualifier和@Provider用法
@Inject @Inject支持构造函数.方法和字段注解,也可能使用于静态实例成员.可注解成员可以是任意修饰符(private,package-private,protected,public).注 ...
- vim设置语法高亮
在vim安装目录中的_vimrc修改,加上以下的代码. set nu! colorscheme desert syntax enable syntax on
- 如何设置通过ip访问数据库
文章转自:http://blog.163.com/wz_pk007/blog/static/17062705020119242440713/ 问题:mysql只能用localhost或127.0.0. ...
- R语言的前世今生(转)
最近因病休养在家,另外也算是正式的离开Snack Studio.终于有了大把可以自由支配的时间.可以自主的安排.最近闲暇的时间总算是恶补了不少前段时间行业没有时间关注的新事物.看着行业里引领潮流的东西 ...
- [整理]通过AngularJS directive对bootstrap日期控件的的简单包装
最近项目上了AngularJS,而原来使用的日期控件的使用方式也需要改变,于是开始了倒腾,看了官方的例子,可以使用AngularJS的directive做简单的处理,这样在html里直接使用申明的的形 ...