题目中给出的h和w范围均大,其实n的最大范围才200000,所以我们建立的线段树大小为min(h,n),线段树的每一个节点包含一个变量c,记录当前区间内还剩下的可以put on的最大长度。插入一个数时,如果该数大于该区间最大值,则返回-1,说明put on不了。否则将它插入到页节点,并返回插入的下标,接着一定不要忘记更新父节点的c值。

#define _CRT_SECURE_NO_DEPRECATE
#include<iostream>
#include<algorithm>
using namespace std;
const int MAXN = 200001;
struct Tnode{int e, b;int c;
};
int h, w, n,ans;;
Tnode tree[4 * MAXN];
void Create(int v, int b, int e){tree[v].b = b;tree[v].e = e;tree[v].c = w;if (e > b){int mid = (b + e) >> 1;Create(2 * v + 1, b, mid);Create(2 * v + 2, mid + 1, e);}
}
void Insert(int v,int x){if (x > tree[v].c){ans = -1;return;}if (tree[v].b==tree[v].e){tree[v].c -= x;ans = tree[v].b;return;}if (x <= tree[2 * v + 1].c)Insert(2 * v + 1, x);elseInsert(2 * v + 2, x);tree[v].c = max(tree[2 * v + 1].c, tree[2 * v + 2].c);
}
int main(){int x;while (~scanf("%d%d%d", &h, &w, &n)){int len = min(h, n);Create(0, 1, len);for (int i = 0; i < n; i++){scanf("%d",&x);Insert(0, x);printf("%d\n", ans);}}return 0;
}

  

转载于:https://www.cnblogs.com/td15980891505/p/5747735.html

HUD2795 线段树(单点更新)相关推荐

  1. HDUOJ----1166敌兵布阵(线段树单点更新)

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

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

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

  3. HDU - 1166敌兵布阵+HDU-1754 I Hate It (线段树单点更新——累加/最大值)

    线段树单点更新,模板题 HDU1166 敌兵布阵 C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和T ...

  4. 【原创】tyvj1038 忠诚 计蒜客 管家的忠诚 线段树(单点更新,区间查询)...

    [原创]tyvj1038 忠诚 & 计蒜客 管家的忠诚 & 线段树(单点更新,区间查询) 最简单的线段树之一,中文题目,不翻译.... 注释讲的比较少,这已经是最简单的线段树,如果看不 ...

  5. FZU 2297 Number theory【线段树/单点更新/思维】

    Given a integers x = 1, you have to apply Q (Q ≤ 100000) operations: Multiply, Divide. Input First l ...

  6. CDOJ 1073 线段树 单点更新+区间查询 水题

    H - 秋实大哥与线段树 Time Limit:1000MS     Memory Limit:65535KB     64bit IO Format:%lld & %llu Submit S ...

  7. 线段树——单点更新(二)

    HDU 4217 Data Structure? http://acm.hdu.edu.cn/showproblem.php?pid=4217 CZ做的一道题目,我帮忙看了看. 题意:给定N个数(1- ...

  8. CodeforcesBeta Round #19 D. Points 离线线段树 单点更新 离散化

    题目链接: http://codeforces.com/contest/19/problem/D 题意: 有三种操作"add x y"往平面上添加(x,y)这个点,"re ...

  9. hdu4046 不错的线段树单点更新

    题意:       给一个字符串,两种操作 0 a b 询问a,b之间有多少个wbw, 1 a c 就是把第a个改成c. 思路:       这个题目我们可以用线段树的点更新来做,一开始写了个好长好长 ...

  10. hdu 1540(线段树单点更新 区间合并)

    解题思路:这一题要求的是连续区间,所以可以把它的子区间合并,这里运用线段树,但是在保存节点信息的方面要做一点修改 lsum:从这个区间的左端点往右能够找到的最大连续区间: rsum:从这个区间的右端点 ...

最新文章

  1. python中国大学排名爬虫写明详细步骤-Python爬虫 2020中国大学排名
  2. This 在 C# 中的含义
  3. 向EXECL文件中导入数据的同时插入图片
  4. Scala父类和父特质的执行顺序
  5. linux java top_linux top命令 监测系统性能
  6. Nuxt.js项目不识别import原因及解决方法
  7. linux c++ 运行时报 段错误 的一个原因
  8. 数学到底有多重要?网友:道理都懂,实力不允许啊
  9. 操作系统(15)-Linux的用户权限
  10. 同一目录下拷贝文件夹里_protobuf在C++下的安装使用
  11. Shell else if mysql_linux shell中 if else以及大于、小于、等于逻辑表达式介绍
  12. 个人随笔——衰人自叙卷贰
  13. 分布式系统中的序列化与反序列化
  14. 计算机软件答辩ppt范文,计算机毕业答辩ppt模板范文.ppt
  15. 计算机键盘重复设置,教你操作win10系统电脑键盘打字时总是出现重复字符的方案...
  16. 机器学习-西瓜书-模型评估
  17. The color “baseBlac in values has no declaration in the base values folder this can lead to crash
  18. 王者荣耀我的服务器没显示哪个区,王者荣耀怎么看自己在哪个区
  19. 如何快速一次性卸载所有python包(第三方库)呢?
  20. gorm增删查改json_go基于echo、gorm实现增删改查,从请求到落库

热门文章

  1. linux zk集群,linux ZooKeeper集群安装
  2. python新闻聚合_使用python对数据进行高效处理,包你玩转分组聚合
  3. 葫芦岛市一高中2021年高考成绩查询表,2021年葫芦岛高考状元多少分是谁,葫芦岛高考状元名单资料...
  4. foreach是同步还是异步JAVA,Java中foreach与正常for循环效率对比
  5. get请求报500_http请求和响应的全过程
  6. 数学--数论--Find Integer(勾股数定理)
  7. Codeforces 1291 Round #616 (Div. 2) C. Mind Control(超级详细)
  8. docker+selenium web自动化测试环境的部署
  9. uboot: RTL8201 100M PHY驱动代码
  10. 什么样的人去贷款最受银行欢迎?