HDU 2795
题目:
http://acm.hdu.edu.cn/showproblem.php?pid=2795
线段树问题,线段树的每个叶子节点保存的是当前行还剩余的长度,每次查询找到满足条件的一行减去该条幅的长度。
有一个点要注意的是关于线段树建立的大小,虽然题目中行数最大是10^9,但是n最大是200000,也就是说,每个条幅占一行也不过200000。所以当h大于n时,让h = n,然后建树就好了。
#include<stdio.h>
#include<algorithm>
#define lson l,m,rt*2
#define rson m+1,r,rt*2+1
#define maxn 222222 //这里只需要比n大就能满足条件
using namespace std;
int tree[maxn*];
int h,w,n;
void pushup(int rt){
tree[rt] = max(tree[rt*],tree[rt*+]);
}
void build(int l,int r,int rt){
tree[rt] = w;
if(l == r)
return;
int m = (l+r)/;
build(lson);
build(rson);
pushup(rt);
}
int query(int l,int r,int rt,int x){
if(l == r){
tree[rt] -= x;
return l;
}
int m = (l+r)/;
int temp;
if(tree[rt*] >= x)
temp = query(lson,x);
else
temp = query(rson,x);
pushup(rt);
return temp;
}
int main(){
while(scanf("%d%d%d",&h,&w,&n)!=EOF){
if(h > n)
h = n;
build(,h,);
for(int i = ;i<n;i++){
int x;
scanf("%d",&x);
if(tree[] < x){
puts("-1");
}else{
printf("%d\n",query(,h,,x));
}
}
}
return ;
}
HDU 2795的更多相关文章
- HDU 2795 Billboard(线段树的另类应用)
Billboard Time Limit: 20000/8000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- HDU 2795——Billboard——————【单点更新、求最小位置】
Billboard Time Limit:8000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit St ...
- HDU 2795 Billboard(宣传栏贴公告,线段树应用)
HDU 2795 Billboard(宣传栏贴公告,线段树应用) ACM 题目地址:HDU 2795 Billboard 题意: 要在h*w宣传栏上贴公告,每条公告的高度都是为1的,并且每条公告都要 ...
- Billboard (HDU 2795)
Billboard (HDU 2795) Hdu 2795 注意到每个广告的长度是1,因此可以将每这一张广告牌当成一个数列表示,每个初始值为w.使用线段树维护这个数列,每次查询为找到这个数列第一个大于 ...
- HDU 2795 Billboard (线段树)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2795 题目大意:有一块h*w的矩形广告板,要往上面贴广告; 然后给n个1*wi的广告,要求把广告贴 ...
- hdu 2795 线段树
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2795 #include <cstdio> #include <cmath> # ...
- hdu 2795 段树--点更新
http://acm.hdu.edu.cn/showproblem.php?pid=2795 在第一和第三多学校都出现线段树,我在比赛中并没有这样做.,热身下,然后31号之前把那两道多校的线段树都搞了 ...
- hdu 2795 Billboard 线段树单点更新
Billboard Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=279 ...
- hdu 2795 Billboard(线段树+单点更新)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2795 Billboard Time Limit: 20000/8000 MS (Java/Others ...
随机推荐
- linux系统性能监视命令
preface as a linux engineer,you should know how to use these command of monitor system,so let's lear ...
- Android之Proguard语法
-include {filename} 从给定的文件中读取配置参数 -basedirectory {directoryname} 指定基础目录为以后相对的档案名称 -injars {class_pat ...
- js017-错误处理与调试
js017-错误处理与调试 本章内容 理解浏览器报告的错误 处理错误 调试JS代码 17.2 错误处理 17.2.1 try-catch语句 try{ //possible error code }c ...
- python学习2 lambda表达式
学习C#的,对这个就特别熟悉了 lambda函数,它没有名字,只有参数和表达式: lambda args: expression def func1(func,arg): return func(a ...
- Ztree的简单使用和后台交互的写法(一)
一.引入ztree的头文件 <!-- 引入ztree/--> <script type="text/javascript" src="${pageCon ...
- Linux常用服务部署与优化之Samba篇
关于Samba的简介概述在此略过,开始搭建Samba服务. 1.安装Samba yum install -y samba samba-client 2.编辑Samba配置文件 首先共享一个目录,任何人 ...
- Android学习笔记——ProgressBar
该工程的功能是实现进度条的显示,按以下按钮进度条增加10% 以下代码是MainActivity.java中的代码 package com.example.progressbar; import and ...
- Log4j、slf4j
1.Log4j 1.1 Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出位置)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志 ...
- FCC上的初级算法题
核心提示:FCC的算法题一共16道.跟之前简单到令人发指的基础题目相比,难度是上了一个台阶.主要涉及初步的字符串,数组等运算.仍然属于基础的基础,官方网站给出的建议完成时间为50小时,超出了之前所有非 ...
- C#中操作XML文件
1.添加结点:XmlNode xmldoc.Load("..\\..\\App.config"); //根元素 XmlElement root = xmldoc.DocumentE ...