#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int maxn = 1e5 * 2 + 10;
int h, w, n, date[maxn], segTree[maxn<<2];
void pushup(int root) {
segTree[root] = max(segTree[root<<1], segTree[root<<1|1]);
}
void build(int L, int R, int root) {
if (L == R) {
segTree[root] = w;
return;
}
int mid = (L + R)>>1;
build(L, mid, root<<1);
build(mid + 1, R, root<<1|1);
pushup(root);
}
int query(int L, int R, int root, int val) {
if (L == R) {
segTree[root] -= val;
return L;
}
int mid = (L + R)>>1;
int ans = (segTree[root<<1] >= val) ? query(L, mid, root<<1, val) : query(mid + 1, R, root<<1|1, val);
pushup(root);
return ans;
}
int main()
{
while (scanf("%d %d %d", &h, &w, &n) == 3) {
if (h > n) {
h = n;
}
build(1, h, 1);
for (int i = 1; i <= n; i++) {
int temp; scanf("%d", &temp);
if (segTree[1] < temp) {
printf("-1\n");
}
else {
printf("%d\n", query(1, h, 1, temp));
}
}
}
return 0;
}
HDU 2795 Billboard——特殊查询的线段树
原创
©著作权归作者所有:来自51CTO博客作者软糖酱八号机的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
【数据结构】特殊矩阵的压缩存储
【数据结构】第三章——栈、队列与数组详细介绍特殊矩阵的压缩存储……
数据结构 C语言 矩阵 压缩存储 数组 -
hdu 2795 Billboard(线段树)
BillboardTime Limit: 20000/8000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other un
integer numbers build output input -
【线段树】 HDOJ 2795 Billboard
简单的线段树,线段树记录每一条线段中的最大值
HDU 线段树 #include #define -
hdu 2795 Billboard(线段树点区)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2795题目大意: 广
子树 #define #include 结点 线段树 -
大模型推理(六):K/V缓存(KV cache)与上下文长度
每一步,模型都会保留所有之前已经
笔记 transformer 神经网络 深度学习 数学建模 -
Java Spring “Bean” 面试清单(含超通俗生活案例与深度理解)
一、Bean 定义和依赖定义有哪几种方式
#面试 #经验分享 #笔记 #java 作用域 -
智能缓存架构:AI预测数据热点
智能缓存架构通过“预测数据热点”实现了缓存策略的主动化与动态化,解决了传统规则驱动缓存的滞后与低效问题。在高并发、高波动的业务环境下,它是系统稳定性和用户体验的关键保障。
#缓存 #架构 #人工智能 #系统优化 #架构设计
















