线段树
little_胖
这个作者很懒,什么都没留下…
展开
-
HDU 2795
http://acm.hdu.edu.cn/showproblem.php?pid=2795 这题由于最多能用到的行数是min(h,n),所以每次就以min(h,n)来建立线段树,树的节点中存放当前区间内所有行中所用长度的最小值,每次更新和查询都要更新到叶子节点,所以我就把更新和查询写到了一个函数里面。以下为代码: #include #include #include #include原创 2013-05-19 10:16:45 · 423 阅读 · 0 评论 -
poj 2828
点击打开链接 这题最开始想了很久也不知道如何处理,看了大神的思路才知道用线段树处理,先建立一个空树,每个节点记录当前区间的空位的个数,然后对输入的数据从后往前插入,而pos的值也就相当于插入的点前面有多少个空位,详细看代码。#include #include #include #include #include #include #include #include #includ原创 2013-05-20 10:46:24 · 399 阅读 · 0 评论 -
HDU 4638 Group
#include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef __int64 int64; typedef long long ll; #define M 100005 #define原创 2013-08-05 11:36:41 · 438 阅读 · 0 评论 -
HDU 4614 Vases and Flowers 线段树区间更新
题意:给你n个花瓶,m次操作,若k==1,则从第A个开始插入花,直到插入了F朵花或者没有空花瓶了,若k==2,则将花瓶a~b清空。 思路:比较裸的线段树,对于第一种操作,若能插花则先求出插花的左右边界,然后将这个区间空位更新为0,第二种操作,询问区间花瓶数后直接将此区间空位更新为区间的r-l+1. #include #include #include #include #include原创 2013-08-26 15:50:13 · 478 阅读 · 0 评论 -
HDU 4630 No Pain No Game 离线+线段树
题意:给出n个数,以及一些区间,求区间中两两数字间的最大公约数。 思路:用pre[j]表示约数j上一次出现的位置,则当约数 j 出现时,它上一次出现的位置所能得到的最大公约数也就是max(j,原来的值)。所以求区间的最大公约数也就成了求区间的最大值,先将所要访问的区间按r由小到大排序,用一颗线段树来维护,求出这个区间的最大值即可。(求约数也可在logn的时间内求出来)。 #include #原创 2013-08-28 19:16:31 · 497 阅读 · 0 评论