[题型整理]线段树
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