hdu 2795(单点改动)

题意:有h×w大的公告板。有n条公告要写入,每条公告高度都是1,宽度是wi,每次从最上最左的空位写,假设有空位输出第几行。假设没有足够空位输出-1。
题解:注意h最大1e9。但事实上是看n的大小。由于假设有n条公告最多占n行,所以线段树最大是min(h,n)。

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 200005;
int h, w, n, sum[N << 2];void pushup(int k) {sum[k] = max(sum[k * 2], sum[k * 2 + 1]);
}void build(int k, int left, int right) {if (left == right) {sum[k] = w;return;}int mid = (left + right) / 2;build(k * 2, left, mid);build(k * 2 + 1, mid + 1, right);pushup(k);
}int query(int k, int left, int right, int x) {if (left == right) {sum[k] -= x;return left;}int mid = (left + right) / 2, res = -1;if (sum[k * 2] >= x)res = query(k * 2, left, mid, x);else if (sum[k * 2 + 1] >= x)res = query(k * 2 + 1, mid + 1, right, x);pushup(k);return res;
}int main() {while (scanf("%d%d%d", &h, &w, &n) == 3) {int temp = h < n ? h : n;build(1, 1, temp);int x;for (int i = 0; i < n; i++) {scanf("%d", &x);if (x > w || sum[1] < x)printf("-1\n");elseprintf("%d\n", query(1, 1, temp, x));}}return 0;
}

posted on 2017-07-19 08:42 mthoutai 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/mthoutai/p/7203818.html

hdu 2795(单点改动)相关推荐

  1. HDU 2795 Billboard (线段树+贪心)

    HDU 2795 Billboard (线段树+贪心) 手动博客搬家:本文发表于20170822 21:30:17, 原地址https://blog.csdn.net/suncongbo/articl ...

  2. 线段树——思维(Codeforces 339D Xenia and Bit Operations/Billboard HDU - 2795)

    Codeforces 339D Xenia and Bit Operations vj地址 题意:给出2的n次方个数,每次将现在这个序列中相邻的两个数运算后合并为一个数,得到一个新的序列,这个新序列的 ...

  3. 线段数单点更新——HDU 2795

    对应HDU题目:点击打开链接 Billboard Time Limit: 20000/8000 MS (Java/Others)    Memory Limit: 32768/32768 K (Jav ...

  4. hdu 2795 公告板 (单点最值)

    题意:有个公告板,大小为h*w,要贴n张公告,每个公告的长度是x,高度固定为1,公告放的要尽可能靠上并尽可能靠左,每给出一张公告,要求这个公告在满足要求的情况下放在了第几层. Sample Input ...

  5. Billboard HDU - 2795(树状数组,单点修改,区间查询)

    题目链接:https://vjudge.net/problem/HDU-2795 思路:h = 1e9行不通,因为广告是1*w的,所以n个广告最多只需要 h = n的高度,那么h=2e5就可以接受了. ...

  6. hdu 2795 段树--点更新

    http://acm.hdu.edu.cn/showproblem.php?pid=2795 在第一和第三多学校都出现线段树,我在比赛中并没有这样做.,热身下,然后31号之前把那两道多校的线段树都搞了 ...

  7. hdu 2795(线段树)

    解题思路:这道题很难想到是用线段树,确实转化的很巧妙 实际上,我们只需要利用线段树(记录1-h)维护哪个位置的剩余空间最大即可,即1,2,......,h是线段树的叶子节点,我们每次要找的就是叶子节点 ...

  8. HDU - 2795 Billboard(线段树)

    题目链接:点击查看 题目大意:给定一个高度为h,宽度为w的广告牌,接下来以此给出n个高度为1,宽度为w的广告,我们需要将广告优先贴在最上边.最左边,问给出的每一个广告应该贴在哪一行,若没有位置贴了则输 ...

  9. hdu 1166 树状数组解

    树状数组解决   (关于树状数组参考大佬的博客https://www.cnblogs.com/hsd-/p/6139376.html) 然后就很好理解这题了,代码附上 /*hdu 1166 单点修改, ...

最新文章

  1. 一根烟上热搜,先让AI看看你的肺
  2. php fatal class ziparchive not found,php中Fatal error: Class ZipArchive not found的解决办法
  3. 以使用QSqlQuery向数据库中插入数据为例,做一个小结
  4. Leetcode题库 125.验证回文串(双指针 C实现)
  5. 雅思8分大神叫你如何学习口语
  6. ap心理可以用计算机吗,AP考试哪些科目需要使用计算器
  7. VUE中出现 Cannot read property ‘length‘ of undefined 的错误
  8. 为什么现在越来越多的人买手机都喜欢从官网购买,而不从实体店买?
  9. oracle client安装与配置
  10. mysql tar.gz_记centos 安装 mysql5.7.23.tar.gz教程
  11. java EE :GenericServlet 抽象类、ServletConfig 接口
  12. 蓝丝雨零基础DNF脚本开发速成系列
  13. sqlServer相关
  14. WPF MVVM 框架
  15. 优启通制作系统u盘_优启通u盘装系统制作工具
  16. 设置jupyter notebook默认浏览器
  17. kafka系列(4)- kafka集群操作
  18. 数据仓库之数据质量管理
  19. Oracle ORA-01031:权限不足
  20. 三相电网的共模与差模

热门文章

  1. protel99se 问题汇总(不定期更新)
  2. VK Cup 2017 - Round 2
  3. chmod 命令详解
  4. 浮动5-常用列表显示(案例)
  5. poj 1118 Lining Up(水题)
  6. Lesson_7 上课笔记_1 ----static关键字和导包
  7. android笔记3:activity的生命周期(转)
  8. REST Framework 的用户认证组件
  9. Mongoose快速入门
  10. mybatis @sqlprovider