
线段树
文章平均质量分 79
BACKUP_zw
github: github.com/zhewang95
blog: zhewang95.github.io
展开
-
hdu2795- Billboard
线段树应用,注意分析题目,h和w的范围都是1e9,但n的范围是200000,故只需要考虑n和h中较小的那个,也就是不超过200000,原创 2015-02-02 19:28:21 · 364 阅读 · 0 评论 -
poj2886Who Gets the Most Candies?
这道题又加深了我对线段树的认识,不过依然被自己坑的很惨,简直不能忍。题意不难理解,用线段树来快速找到从当前开始的第k个人,注意公式推导一定要认真。最郁闷的是,自己的约数算法是错的。。。愚蠢的写成了i j都小于770,实际上有些数的约数可能大于根号500000.。。#include#include#include#includeusing namespace std;const原创 2015-02-17 18:20:55 · 411 阅读 · 0 评论 -
poj2828Buy Tickets
这道题收获非常大啊。我觉得这道题的要点不仅是对于线段树的考察,更重要的是对问题的理解抽象以及转化能力。200000的数据量如果直接模拟,就算是用链表也要达到1e10,绝对超时。可见从前往后考虑是没有可能的。如果从后向前考虑,也就是假设现在的状态是已经得到了最后的队列,要做的是一个一个退队,就可以发现,最后一条命令的人的位置可以直接确定,倒数第二条命令对应的那个人如果是在倒数第一个前面,就可原创 2015-02-11 17:33:29 · 381 阅读 · 0 评论 -
hdu1698Just a Hook
第一次写线段树区间更新,一遍遍的错直到慢慢发现发现自己错在哪,额。。。关键要处理好add[root]下方的时机,一定要清楚的保证add为0时该段区间已经更新过,而pushdown时一定要保证是子孙真正需要的值还有就是数据量较大时一定要用scanf#include#include#include#include#define MAX 100100using namespace原创 2015-04-13 09:11:03 · 326 阅读 · 0 评论 -
poj3468A Simple Problem with Integers
线段树区间更新,这题略坑,当然,自己坑自己的成分还是占大多数。。。还是代码能力的问题,对long long和int之间的差异不敏感,导致错误,奇怪的是用int64就不会出错。。。还有数组必须开到140000才能ac,但有人开100010照样ac,估计是我的写法有问题,尤其是pushdown那个地方反正线段树区间更新我还很不熟练,代码需要优化#include#include#in原创 2015-04-13 21:04:51 · 303 阅读 · 0 评论 -
uestc数据结构训练B - 秋实大哥与花
先做的这题a不了才做的poj那题,结果是同样地原因,数组开到140000才能ac,绝对我的写法存在隐蔽的错误,这题一定要留着把正确的写法搞出来不过这也提醒了我,比赛的时候,数组适当开大也许是明智之举#include#include#include#include#define MAX 140100using namespace std;long long n,m,sum[MA原创 2015-04-13 21:11:17 · 677 阅读 · 0 评论 -
2015 UESTC Training for Data Structures 秋实大哥下棋
第一次看这题的时候确实不知道怎么下手,看了别人的题解后才恍然大悟。地址在这里http://www.cnblogs.com/Xiper/p/4470218.html就是先将车和矩形(右边)放在一起对x坐标排序,然后从小到大处理。维护一棵线段树,对于车,更新线段树的最小值。对于矩形,查询矩形的竖边区间的线段树的最小值,只要最小值大于该矩形的左边的x坐标,就说明该矩形被保护。然后对y坐标也类似处理。原创 2016-03-11 20:45:49 · 490 阅读 · 0 评论