- 博客(5)
- 资源 (3)
- 收藏
- 关注
原创 【CodeForces908D】New Year and Arbitrary Arrangement (期望DP)
题目大意有一个ab字符串,初始为空。 用PaPa+Pb\frac {P_a} {P_a+P_b}的概率在末尾添加字母a,有 PbPa+Pb\frac {P_b} {P_a+P_b}的概率在末尾添加字母b,当出现≥k个ab子串时立即停止添加字母,求最后期望的ab子串个数。(子串ab不要求连续) 例子:当k=1,aab含2个ab,bbabbab时不可能出现的,因为到了bbab就会停止添加字母。
2017-12-31 09:29:02 1669 3
原创 树链剖分
用途解决树的上路径修改,查询等操作,时间复杂度O(R×log2n)O(R\times log_2n)(R为维护的其它数据结构复杂度,一般为线段树R=log2nR=log_2n)。主要思路将整棵树的边分为轻边和重边,将每个重边连成的链当作一个区间,用维护区间的数据结构去维护它。如何选择重边一般选连接子树所含节点最多的儿子作为重边,如图: 这样可以保证从根节点到任何一个节点,最多只有log2nlo
2017-12-18 13:22:50 329 2
原创 树的点分治
用途统计所有树上两点的路径的信息,常规是O(n2)O(n^2),用此算法可已达到 O(R×nlog2n)O(R\times nlog_2n)(R为维护的数据结构时间复杂度)。主要思路通过寻找树的重心,把树分成若干块(重心的子树),再分治处理每个子树。 (重心是一个结点使它的子树中结点个数最大的值最小)由于重心的单个子树的结点个数一定小于整个树结点树的一半,所以每次使用重心分割,都能将这个树规模至少
2017-12-13 21:37:25 357 1
原创 可持久化Treap
可持久化Treap只能使用非旋转版Treap。 非旋转Treap,即使用“合并”(Merge)和“分裂”(Split)两个操作来完成“插入”(Insert)和“删除” (Delete)操作。这样可以保证在进行插入和删除操作时,只改变一条链上的点,最多修改log2nlog_2n个结点。 可持久化Treap,就需要在插入和删除时,新建一条链的结点,作为一个新的版本。 #include<cstdio
2017-12-03 21:02:04 583
原创 可持久化数据结构
可持久化数据结构,就是可以访问历史状态的数据结构,可以从任何一个历史版本更新出一个新的状态。like this↓ 有的数据结构还可以将其中一个版本与历史版本相减得到区间修改的信息,如权值线段树,Trie树等。实现基本上都有个套路,就是在修改数据结构信息时,将被修改的结点新建,结点之间的边保留,新建的结点就成为一个新的版本,并且将没修改的结点共用,节省空间。链接: 可持久化线段树
2017-12-03 20:22:40 378 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人