05 2016 档案

摘要:树状数组 树状数组(Binary Indexed Tree,BIT)是一种维护区间信息的数据结构。 对于长度为n的序列,维护n个子区间,在修改和查询时分为子区间维护。 原理蕴含在此图中: 每一个区间都可以分成若干个不相交子区间之和,其中x区间长度为lowbit(x)=x&( x) 操作: (1)ad 阅读全文
posted @ 2016-05-28 11:17 Krew 阅读(147) 评论(0) 推荐(0)
摘要:题目: http://codevs.cn/problem/1540/ 分析: 首先不难想到并查集维护,但是貌似用了路径压缩就不支持查询距离操作? 实际上用带权并查集维护到根结点的距离,查询时相减一下就可以了【滑稽】 代码: 阅读全文
posted @ 2016-05-27 22:05 Krew 阅读(113) 评论(0) 推荐(0)
摘要:并查集: 并查集(union find set)是一种维护各个不相交集合之间的关系的数据 结构,可以用于维护图的连通分量或是变量之间的关系。 通常用森林表示法实现并查集,即为每个元素,维护一个F[i]表示它的父节点,初始时每个结点自成一棵树,每棵树中的元素表示当前集合中的元素。 操作: (1)uni 阅读全文
posted @ 2016-05-27 21:59 Krew 阅读(258) 评论(0) 推荐(0)
摘要:问题: 竞赛中存在这样一种计数类问题:求在[a,b]区间内满足条件x的数个数(或其他类似目的) 这种问题统称为数位类计数问题,可以用数位DP解决。 解析: 首先这种问题一般满足区间减法,所以我们可以把它转化为 [0,b]的个数 [0,a)的个数。 然后问题变成了:求在[0,b]区间内满足条件x的数个 阅读全文
posted @ 2016-05-16 19:17 Krew 阅读(124) 评论(0) 推荐(0)
摘要:欧几里得算法: 对于给定的整数a,b,我们可以在O(logn)的时间里求出它们的最大公约数,即使用著名的欧几里得算法(辗转相除法)解决这个问题。 这个算法基于以下事实: Gcd( a , b ) = Gcd(b , a%b ) ,当b=0,Gcd=a 扩展欧几里得算法: 由裴蜀定理可得,对于一组整数 阅读全文
posted @ 2016-05-10 23:44 Krew 阅读(216) 评论(0) 推荐(0)