题目传送门

 /*
主要利用线段树求区间最值,sum[]代表位置可用空间
每次找到最大值的位置
功能:查询最靠前能容纳广告的位置
*/
#include <cstdio>
#include <cstring>
#include <algorithm>
#define lson l, m, rt << 1
#define rson m+1, r, rt << 1 | 1 const int MAX_N = + ;
int w[MAX_N];
int num[MAX_N];
int sum[MAX_N << ];
int n, h, W; void maxsum(int rt)
{
sum[rt] = std::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 p, int l, int r, int rt)
{
if (l == r)
{
sum[rt] -= p; //如果可以用,更新sum,update在query里做了
return l; //返回该位置
}
int m = (l + r) >> ;
int ans;
if (p <= sum[rt << ]) //如果p小于左孩子的最大值,则往左边下去
ans = query (p, lson);
else
ans = query (p, rson);
maxsum (rt); return ans;
} int main(void) //HDOJ 2795 Billboard
{
//freopen ("inD.txt", "r", stdin); while (~scanf ("%d%d%d", &h, &W, &n))
{
if (h > n) // h <= n
h = n; build (, h, ); int x;
while (n--)
{
scanf ("%d", &x);
if (x > sum[]) printf ("%d\n", -); //所有位置的最大值
else printf ("%d\n", query(x, , h, ));
}
} return ;
}

线段树(单点更新) HDOJ 2795 Billboard的更多相关文章

  1. 线段树(单点更新) HDOJ 4288 Coder

    题目传送门 #include <cstdio> #include <cstring> #define lson l, m, rt << 1 #define rson ...

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

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

  3. HDU 1754 I Hate It 线段树单点更新求最大值

    题目链接 线段树入门题,线段树单点更新求最大值问题. #include <iostream> #include <cstdio> #include <cmath> ...

  4. HDU 1166 敌兵布阵(线段树单点更新)

    敌兵布阵 单点更新和区间更新还是有一些区别的,应该注意! [题目链接]敌兵布阵 [题目类型]线段树单点更新 &题意: 第一行一个整数T,表示有T组数据. 每组数据第一行一个正整数N(N< ...

  5. poj 2892---Tunnel Warfare(线段树单点更新、区间合并)

    题目链接 Description During the War of Resistance Against Japan, tunnel warfare was carried out extensiv ...

  6. HDU 1166 敌兵布阵(线段树单点更新,板子题)

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

  7. POJ 1804 Brainman(5种解法,好题,【暴力】,【归并排序】,【线段树单点更新】,【树状数组】,【平衡树】)

    Brainman Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 10575   Accepted: 5489 Descrip ...

  8. HDU 1166 敌兵布阵(线段树单点更新,区间查询)

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

  9. POJ.3321 Apple Tree ( DFS序 线段树 单点更新 区间求和)

    POJ.3321 Apple Tree ( DFS序 线段树 单点更新 区间求和) 题意分析 卡卡屋前有一株苹果树,每年秋天,树上长了许多苹果.卡卡很喜欢苹果.树上有N个节点,卡卡给他们编号1到N,根 ...

随机推荐

  1. Spring Boot JPA 连接数据库

    本文将介绍怎样在Spring Boot project中加入JPA作为持久化方式. 改动 pom.xml 依赖 与上一篇介绍的 jdbc 不同的是 spring-boot-starter-jdbc 改 ...

  2. base64 hash sha

    /*! * Crypto-JS v1.1.0 * http://code.google.com/p/crypto-js/ * Copyright (c) 2009, Jeff Mott. All ri ...

  3. Android 代码设置RelativeLayout元素居中

    RelativeLayout relativeLayout= new RelativeLayout(this); RelativeLayout.LayoutParams rlp=new Relativ ...

  4. LA-3716(sort的神用)

    题意: 给出两条长度均为n的NDA链A和B,找出一段最长的字串[l,r]使得该区域的突变位置不超过p%; 思路: sum[i]表示[1,i]中不相同的个数,可得表达式(sum[i]-sum[j])/( ...

  5. codeforces 672A A. Summer Camp(水题)

    题目链接: A. Summer Camp time limit per test 1 second memory limit per test 256 megabytes input standard ...

  6. 关于base64编码的原理及实现

    我们的图片大部分都是可以转换成base64编码的data:image. 这个在将canvas保存为img的时候尤其有用.虽然除ie外,大部分现代浏览器都已经支持原生的基于base64的encode和d ...

  7. 多线程-threading模块3

    超级播放器 #coding:utf-8 import threading from time import sleep,ctime #超级播放器 def super_player(file,time) ...

  8. 【旧文章搬运】从PEB获取内存中模块列表

    原文发表于百度空间,2008-7-25========================================================================== PEB中的L ...

  9. sublime text 3中修改tab键为缩进4个空格

    1. 菜单栏里点击 Preferences-> Setting-User, 如图 2. 在弹出来的文本里,添加如下两行: { // 注意只有一个大括号,如果之前有属性,如在之前的属性后确保有 , ...

  10. A. Meeting of Old Friends

    time limit per test 1 second memory limit per test 256 megabytes input standard input output standar ...