[题型整理]线段树

· · 个人记录

HDU1166 - 敌兵布阵

单点修改,查询区间的和。

HDU1754 - I Hate It

单点加减,查询区间最大值。

POJ3468 - A Simple Problem with Integers

区间加减,查询区间的和

HDU1698 - Just a Hook

区间加减,查询区间的和

POJ2528 - Major's posters

需要先对海报的左右端点以及端点之间的区域进行离散化,然后再区间加减,查询区间最大值。

HDU3974 - Assign the task

建图,走一遍dfs,对所有人进行一次重新编号,利用线段树进行区间修改、查询。

采用dfs序进行编号的好处是,让每个人的下属连在一起,形成连续区间,方便线段树进行修改。

CF1535D - Playoff Tournament

对每个区间维护比赛到当前为止结果的可能性数量。建的树和比赛表很像,重点是编号。

HDU4027 - Can you answer these queries?

对区间内的每个元素开根号,查询区间的和。

TLE:注意到long long型的数最多也只开64次根,大量的询问会出现对1开根还是1的情况。当前串如果都是1,那么可以直接返回,因为不管开多少次根还是1,不会发生变化。

HDU1540 - Tunnel Warfare

给一个序列,进行单点爆破操作和恢复上一个被爆破的点的操作,查询单点所在的连通区域的长度。

对每个区间维护当前区间左侧和右侧的最大连通长度。

查询时,考虑自己的左右儿子中间部分连通(左儿子的右连通+右儿子的左连通)包不包含目标,不包含则根据中值进到对应的儿子,包含则直接输出结果。

HDU4578 - Transformation

给定序列,进行区间加减乘、区间逐项乘方修改,查询区间的和。(大杂揉)本题求和的查询重在公式的推导。

HDU4578-Transformation by xhyu61