数据结构
__Galaxy
,,,,,,,,
展开
-
POJ 3145 Harmony Forever
题意:给出”A x”&”B y”两种操作,前者表示查询数列中模x最小的数,如果相等的话,那么输出最近那个数进入数列的顺序 这样的操作容易想到线段树,但会发现建树时不知道怎么具体建树,可以充分利用一下数据范围,对于每个数都建立一个节点,然后直接做就好了,最重要的就是查询时, 对于1~mod-1, mod~2*mod-1, ……这样的一个一个查询,但是容易发现当模数很小的时候,这样会常数很大,不如直接原创 2016-12-21 19:27:11 · 281 阅读 · 0 评论 -
UOJ164 线段树历史最值查询
对于线段树的历史查询我们可以用一个二元组定义(a, b)表示+a对b取max 我们用二元组(a, b), (c, d)分别表示当前以及历史的标记; 注意顺序的问题很重要,提醒一下重载运算符会很方便,还要注意负无穷相加得太多会爆,合并时对标记-oo取max很有必要,好像很抽象,那我在代码里注释一下,防止大家被坑。。。。#include <cstring> #include <cstdio>type原创 2017-02-24 18:49:44 · 354 阅读 · 0 评论 -
树链剖分
下面给出能够完成下列操作的一份树剖代码 1 x y z 表示将树从x到y结点最短路径上所有节点的值都加上z 2 x y 表示求树从x到y结点最短路径上所有节点的值之和 3 x z 表示将以x为根节点的子树内所有节点值都加上z 4 x 表示求以x为根节点的子树内所有节点值之和 /* *TODO *---- Galaxy */ #include <cstdio> #include <cstring>ty原创 2017-02-24 18:51:30 · 202 阅读 · 0 评论