线段树
文章平均质量分 71
wnjason
这个作者很懒,什么都没留下…
展开
-
HDOJ 1166 -----线段树
题目大意:输入T,表示测试用例数,然后输入N,表示有多少个营地,然后跟着输入N行表示,分别表示每个营地有多少人,之后则是一些命令操作(1) Add i j,i和j为正整数,表示第i个营地增加j个人(j不超过30) (2)Sub i j ,i和j为正整数,表示第i个营地减少j个人(j不超过30); (3)Query i j ,i和j为正整数,i (4)End 表示结束,这条命令在每组数据最后出原创 2014-12-04 21:10:00 · 398 阅读 · 0 评论 -
HDOJ 1754 ------线段树
题目大意: 输入N,M,表示有N个学生,M次操作,操作主要有两种查询[A,B]内分数最高的学生 (2) 更新 将A学生的分数修改为 B。 算法思想: 主要使用线段树的,单点更新,和区间查询操作。 代码如下: #include #include #include #define lson l,m,rt<<1 #define rson m+1,r,rt <<原创 2014-12-07 22:14:08 · 378 阅读 · 0 评论 -
HDOJ 1698-----线段树
题目大意:DOTA中屠夫的钩子有N个链子组成,每个链子可有金,银,铜,三种材质做成,铜链价值1,银价值2,金价值3,先对钩子进行Q次的更新操作,求出更新完后钩子的价值。 算法思想: 主要使用线段数的区间成段更新操作,首先间一个规模为N的线段树,然后用一个标记数组记录线段树每个节点的价值,之后在此基础上按照对钩子的更新操作进行线段树的更新,最后统计出钩子的价值。 代码如下: #include原创 2014-12-09 10:38:19 · 633 阅读 · 0 评论 -
HDOJ 1394 求最小你序数
题目大意:给出一个序列,通过不断移动元素的位置,寻求此过程中最小的你序数。 算法思想: 先使用线段树用O(nlog(n))的时间计算出初始时的你序数,然后在寻找最小的逆序数,用到的结论:如果是0~n-1的序列将x[i]移动到末尾逆序数会先减少x[i]个然后再增加n-x[i]-1个。最后找出最小的你序数。 代码如下: #include #include #include #define原创 2014-12-08 16:57:00 · 482 阅读 · 0 评论 -
POJ 3468 -----线段树
题意:给出一个序列,在次序列上进行成段更新,之后查询一段序列的区间和。 算法思想: 利用线段树进行,动态的区间更新操作,同时对更新后的线段树进行区间和的查询。 代码如下: #include #include using namespace std; #define LL long long #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|原创 2014-12-09 19:57:53 · 321 阅读 · 0 评论 -
HDOJ 2795 ----线段树(区域覆盖问题)
题目大意:有一块K*W的广告牌,寻找1*L的广告的最大粘贴位置。 算法思想: 主要使用线段树的,查询和更新操作。初始时建立一个有h个叶子节点的线段树,每个节点的之都为W,然后进行查询操做,查询每个广告的宽度是否满足Max[1],不满足是输出-1,满足时是输出最优行号,每次查询是伴随着要对线段树进行动态更新。下面的代码中将查询操作和更新操作写在一起了。 代码如下: #include #in原创 2014-12-08 20:51:37 · 505 阅读 · 0 评论