传送门

结点中的l和r表示层数,maxx表示这层最多还剩下多少宽度。根据公告的宽度取找到可以放的那一层

找到后返回层数,并修改maxx

 #include<bits/stdc++.h>
using namespace std;
const int maxn= +;
int h,w;
int ans;
struct Node
{
int l,r,maxx;//l和r是层数,maxx是每层还有多少空位
} node[maxn<<];
void PushUp(int k)
{
node[k].maxx=max(node[k<<].maxx,node[k<<|].maxx);
}
void BuildTree(int l,int r,int k)
{
node[k].l=l;
node[k].r=r;
node[k].maxx=w;
//因为初始是每个节点的最大值均为w
//所以可以省去PushUp(k);
if(l==r)
{
return;
}
int mid=(l+r)>>;
BuildTree(l,mid,k<<);
BuildTree(mid+,r,k<<|);
//PushUp(k);
}
void UpdateTree(int i,int x)
{
if(node[i].l==node[i].r)
{
node[i].maxx-=x;
ans=node[i].l;
return;
}
if(x<=node[i<<].maxx)
UpdateTree(i<<,x);//往左边找,左边层数比较低(因为他要尽量放在最上面)
else
UpdateTree(i<<|,x);
PushUp(i);
}
int main()
{
int n;
while(cin>>h>>w>>n)
{
if(h>n)
h=n;
//根据题意,因为最多放n个公告,
//占用的最大高度也只有n,优化建树的高度
BuildTree(,h,);
int x;
while(n--)
{
ans=-;
scanf("%d",&x);
if(node[].maxx>=x)
UpdateTree(,x);//每次都从第一层开始找
printf("%d\n",ans);
}
}
return ;
}

hdu2795 Billboard(线段树单点修改)的更多相关文章

  1. Ocean的礼物(线段树单点修改)

    题目链接:http://oj.ismdeep.com/contest/Problem?id=1284&pid=0 A: Ocean的礼物 Time Limit: 5 s      Memory ...

  2. hdu 2795 Billboard 线段树单点更新

    Billboard Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=279 ...

  3. POJ 3321 Apple Tree(DFS序+线段树单点修改区间查询)

    Apple Tree Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 25904   Accepted: 7682 Descr ...

  4. HDU - 1754 线段树-单点修改+询问区间最大值

    这个也是线段树的经验问题,待修改的,动态询问区间的最大值,只需要每次更新的时候,去把利用子节点的信息进行修改即可以. 注意更新的时候区间的选择,需要对区间进行二分. #include<iostr ...

  5. HDU 1166 敌兵布阵 <线段树 单点修改 区间查询>

    敌兵布阵 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  6. 校内模拟赛T5:连续的“包含”子串长度( nekameleoni?) —— 线段树单点修改,区间查询 + 尺取法合并

    nekameleoni 区间查询和修改 给定N,K,M(N个整数序列,范围1~K,M次查询或修改) 如果是修改,则输入三个数,第一个数为1代表修改,第二个数为将N个数中第i个数做修改,第三个数为修改成 ...

  7. HDU-------(2795)Billboard(线段树区间更新)

    Billboard Time Limit: 20000/8000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  8. HDU - 1166 敌兵布阵 方法一:(线段树+单点修改,区间查询和) 方法二:利用树状数组

    C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况.由于 ...

  9. hdu2795(Billboard)线段树

    Billboard Time Limit: 20000/8000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

随机推荐

  1. Sharepoint 2013 多服务器域的目录服务器和搜索服务的配置

    一般而言,大部分的sharepoint的管理工作均可以通过Centrlal Admin完成,可惜这个操作不得不要用powershell. 假如Webfront服务器叫 WebServer 目录服务器叫 ...

  2. 玩Web虎-运行时受保护文件不可复制

    1. 直接复制粘贴,提示“操作无法完成,因为文件已在system中打开” 2.拔下加密锁后,复制粘贴,依然上错 3.用NoVirusThanks的 kernel-mode driver loader ...

  3. PHP Redis 全部操作方法 转载

    PHP Redis 全部操作方法   Classes and methods Usage Class Redis Class RedisException Predefined constants C ...

  4. linux 用户和组及文件权限的相关内容

    1.添加用户(只有管理员用户或具有管理员权限的用户可以添加删除用户) useradd  用户名 (laoda)  新创建用户后home下会多一个laoda的目录 ,此目录中存放的是laoda用户相关的 ...

  5. Day1 Mybatis初识(一)

    框架 将重复的,繁琐的代码实现封装,让程序员将更多的精力放在业务的理解和分析上. 框架的作用 提高开发效率 隐藏细节 三大框架SSH  -->   SSM 1)        表述层:   用户 ...

  6. Day4 JavaScript(二)dom操作

    dom(文档对象模型) 文档结构 文档加载,转换为文档对象模型.将所有的标签,文本,属性转换为dom节点,形成一棵dom树. 标签,元素,节点: <a> 标签开始到结束的部分 标签,文本, ...

  7. ddt 接口框架数据处理调用excel 处理

    之前在csdn写过这里就不赘述了: https://blog.csdn.net/chen498858336/article/details/84351146

  8. P2467 [SDOI2010]地精部落

    题目描述 传说很久以前,大地上居住着一种神秘的生物:地精. 地精喜欢住在连绵不绝的山脉中.具体地说,一座长度为N的山脉H可分为从左到右的N段,每段有一个独一无二的高度Hi,其中Hi是1到N之间的正整数 ...

  9. ZOJ 3983 Crusaders Quest(思维题)

    C - Crusaders Quest Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%lld & %llu S ...

  10. Linux服务-mysql基础篇

    目录 1. 关系型数据库介绍 1.1 数据结构模型 1.2 RDBMS专业名词 1.3 关系型数据库的常见组件 1.4 SQL语句 2. mysql安装与配置 2.1 mysql安装 2.2 mysq ...