随笔分类 -  线段树

摘要:这题挺揪心的 想了半天为什么要先乘法后加法 原因是这样的: 1. 加法和乘法顺序不一样会导致不同的结果 比如: (a+b)*c 不等于 a*c + b 而在记录懒标记的时候,加法和乘法两种标记放到一起,并不知道哪个先,哪个后。 所以要确定一个优先级 我们分析一下两种顺序: (1) 先加后乘 : (a 阅读全文
posted @ 2018-08-22 21:22 Frank的成长之路 阅读(242) 评论(0) 推荐(0)
摘要:题目:codevs 3289 花匠 链接:http://codevs.cn/problem/3289/ 这道题有点像最长上升序列,但这里不是上升,是最长“波浪”子序列。用动态规划可以解决,方程类似最长上升子序列: f[i]=max(f[j]) ( 1≤j≤i-1 && ( (f[j]%2=1 &&  阅读全文
posted @ 2017-01-07 18:15 Frank的成长之路 阅读(167) 评论(0) 推荐(0)
摘要:题目:codevs 1576 最长严格上升子序列 链接:http://codevs.cn/problem/1576/ 优化的地方是 1到i-1 中最大的 f[j]值,并且A[j]<A[i] 。根据数星星的经验,一个点一个点更新可以解决1到i-1的问题,然后线段树是维护最大值,那么A[j]<A[i]的 阅读全文
posted @ 2017-01-06 20:59 Frank的成长之路 阅读(225) 评论(0) 推荐(0)
摘要:先来介绍一下线段树。 线段树是一个把线段,或者说一个区间储存在二叉树中。如图所示的就是一棵线段树,它维护一个区间的和。 蓝色数字的是线段树的节点在数组中的位置,它表示的区间已经在图上标出,它的值就是这段区间的和。 比如说线段树1号节点表示[1,5]区间,它的值是13,也就是原数组1号位到5号位所有数 阅读全文
posted @ 2017-01-02 14:51 Frank的成长之路 阅读(255) 评论(0) 推荐(0)
摘要:题目: poj 2352 Stars 数星星 题意:已知n个星星的坐标。每个星星都有一个等级,数值等于坐标系内纵坐标和横坐标皆不大于它的星星的个数。星星的坐标按照纵坐标从小到大的顺序给出,纵坐标相同时则按照横坐标从小到大输出。 (0 <= x, y <= 32000) 要求输出等级0到n-1之间各等 阅读全文
posted @ 2016-12-31 20:07 Frank的成长之路 阅读(312) 评论(0) 推荐(0)
摘要:codevs 1082 线段树练习3 链接:http://codevs.cn/problem/1082/ sumv是维护求和的线段树,addv是标记这歌节点所在区间还需要加上的值。 我的线段树写法在运用的时候,需要更新或查找的区间是储存在y1,y2变量里面的,值是储存在变量v里面的,查询结果储存在变 阅读全文
posted @ 2016-12-31 13:00 Frank的成长之路 阅读(442) 评论(0) 推荐(0)