线段树(单点更新) HDOJ 2795 Billboard
/*
主要利用线段树求区间最值,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的更多相关文章
- 线段树(单点更新) HDOJ 4288 Coder
题目传送门 #include <cstdio> #include <cstring> #define lson l, m, rt << 1 #define rson ...
- hdu 2795 Billboard 线段树单点更新
Billboard Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=279 ...
- HDU 1754 I Hate It 线段树单点更新求最大值
题目链接 线段树入门题,线段树单点更新求最大值问题. #include <iostream> #include <cstdio> #include <cmath> ...
- HDU 1166 敌兵布阵(线段树单点更新)
敌兵布阵 单点更新和区间更新还是有一些区别的,应该注意! [题目链接]敌兵布阵 [题目类型]线段树单点更新 &题意: 第一行一个整数T,表示有T组数据. 每组数据第一行一个正整数N(N< ...
- poj 2892---Tunnel Warfare(线段树单点更新、区间合并)
题目链接 Description During the War of Resistance Against Japan, tunnel warfare was carried out extensiv ...
- HDU 1166 敌兵布阵(线段树单点更新,板子题)
敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- POJ 1804 Brainman(5种解法,好题,【暴力】,【归并排序】,【线段树单点更新】,【树状数组】,【平衡树】)
Brainman Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 10575 Accepted: 5489 Descrip ...
- HDU 1166 敌兵布阵(线段树单点更新,区间查询)
描述 C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况 ...
- POJ.3321 Apple Tree ( DFS序 线段树 单点更新 区间求和)
POJ.3321 Apple Tree ( DFS序 线段树 单点更新 区间求和) 题意分析 卡卡屋前有一株苹果树,每年秋天,树上长了许多苹果.卡卡很喜欢苹果.树上有N个节点,卡卡给他们编号1到N,根 ...
随机推荐
- 第一讲:使用html5——canvas绘制奥运五环
<html> <head> <title>初识canvas</title> </head> <body> <canvas ...
- 安卓开发中使用ZXing生成解析二维码
编码示例 package com.wolf_pan.qrcodesample; import android.graphics.Bitmap; import android.graphics.Colo ...
- HDU2255 奔小康赚大钱 【模板】 二分图完美匹配
基本概念 二分图有两个种点:X和Y.X与Y之间存在一些边,每个边有一个权值.现要求求一组X与Y间的通过边实现的一一匹配,使得得到的边权和最大. 总体过程 对每个X节点设置一个顶标Xl,初值为与X相邻的 ...
- thinkphp 防sql注入
$Model->where("id=%d and username='%s' and xx='%f'",array($id,$username,$xx))->selec ...
- 织梦CMS首页、列表页文章如何调出该文章TAG标签?
1.如果是dedecms v5.7版本直接使用标签 [field:id function=GetTags(@me)/] 就可以调用出来了.只不过不带连接的. 2.如果需要连接请注释掉include/h ...
- 如何在chrome上设置Bing为默认搜索引擎,在设置中无法直接设置
- 自定义android 音乐通知栏 ——可伸缩扩展
Android custom notification for music player Example In this tutorial, you will learn how to creat ...
- 小程序不支持wx.request同步请求解决方法
小程序为了用户体验,所有的request均为异步请求,不会阻塞程序运行 百牛信息技术bainiu.ltd整理发布于博客园 所以当你需要同步请求,锁死操作时,最好将所有的逻辑写在success:func ...
- Code:log4
ylbtech-Code:log4 1.返回顶部 2.返回顶部 3.返回顶部 4.返回顶部 5.返回顶部 0. http://logging.apache.org/log4net/ 0 ...
- css原生变量 var
css 变量的支持情况: 在pc端支持还不错,ie不支持,移动端也不支持,大概这就是css变量没有广泛使用的原因吧 CSS预编译工具Sass/Less/Stylus的便捷之处就是可以定义变量,方便代码 ...