随笔分类 -  数据结构 可持久化线段树

摘要:【题目】 "百度科学家(困难)" 【题意】给定n个非负整数,最终需要选择一个数字集合。m次操作,修改一个非负整数,或规定选择第x个数字则必须选择区间[l,r]内的数字。最终求非空数字集合的最小值。$n,m \leq 10^5$。 需要特别注意,被替换了的非负整数也是可以选择的。每一个非负整数都是本质 阅读全文
posted @ 2018-05-12 23:43 ONION_CYC 阅读(464) 评论(0) 推荐(0)
摘要:【题意】n个数字分成k段,每一段的价值是段内不同数字的个数,求最大价值。n<=35000,k<=50。 【算法】分治决策单调+主席树(可持久化线段树) 【题解】 f[i][j]表示前i天分成j段的最大价值。 f[i][j]=max(f[k][j-1]+work(k+1,i)),j-1<=k<i。 首 阅读全文
posted @ 2017-09-05 19:03 ONION_CYC 阅读(249) 评论(0) 推荐(1)
摘要:【算法】可持久化线段树(主席树)+启发式合并+LCA 【题意】给定森林,每次询问u,v路径上的第k小,或给u,v连边(保证森林),n<=8*10^4。 【题解】 区间第k小:离散化,在上一个位置的基础上建可持久化权值线段树,每次比较左子树和k并找到第一个大于等于k的位置。 树上第k小:每个点上其父亲 阅读全文
posted @ 2017-09-03 23:08 ONION_CYC 阅读(262) 评论(0) 推荐(0)
摘要:【算法】主席树||离线+树状数组 【题解】 主席树经典应用:找区间不同的数字个数。 做法:记录每个数上一次出现的位置last[i],对last建权值线段树,对于区间询问last[i]<L的数字个数。 注意权值范围是last[i],也即0~n。 注意x=0时返回,否则可能c<0就完了。 #includ 阅读全文
posted @ 2017-09-03 21:43 ONION_CYC 阅读(282) 评论(0) 推荐(0)
摘要:【题意】带修改的查询区间第k小 【算法】树状数组套可持久化线段树 【题解】对于树状数组上的每个节点,维护可持久化权值线段树(节点为权值),从而达到查询前缀和的目的。 对于每次修改,在待修改线段树基础上运用可持久化性质来修改,先删除原数字,再加入新数字。 注意记录修改后的原数字,方便后来删除。 ★注意 阅读全文
posted @ 2017-08-21 11:30 ONION_CYC 阅读(252) 评论(0) 推荐(0)
摘要:【算法】主席树 【题解】例题,记录和,数字出现超过一半就递归查找。 主席树见【算法】数据结构 #include<cstdio> #include<algorithm> #include<cstring> #include<cctype> using namespace std; int read() 阅读全文
posted @ 2017-08-17 21:46 ONION_CYC 阅读(247) 评论(0) 推荐(0)
摘要:【平衡树】★平衡树 by onion_cyc 【莫队算法】 问题:给定长度为n的序列和m个区间询问,支持快速增减相邻元素维护区间信息。 将询问按左端点分块,块大小为$Q=\frac{n}{\sqrt m}$,块内按右端点排序。 然后依次回答询问,需要O(1)从(l,r)转移到(l,r+1),(l,r 阅读全文
posted @ 2017-03-25 17:10 ONION_CYC 阅读(849) 评论(0) 推荐(0)
摘要:【算法】 【算法】网络流 【算法】树 【算法】数学 ————【专题】生成树计数(矩阵树定理) ————【专题】计数问题(排列组合,容斥原理,卡特兰数) ————【算法专题】卡特兰数(计数数列) ————【专题】数论 ————【专题】概率和期望 【算法】动态规划 【算法】数据结构 ————【专题】平衡 阅读全文
posted @ 2016-08-10 21:08 ONION_CYC 阅读(2144) 评论(0) 推荐(6)