文章分类 -  数据结构——主席树

摘要:我们直接在dfs的时候顺便建主席树 维护一个节点到根路径上的节点出现情况 对于查询(u,v) 用u点的主席树+v点的主席树 lca(u,v)的主席树 lca(u,v)父节点的主席树,在这样产生的主席树上查找第k小的排名,最后输出它原来的点权。 lca我选择了树链剖分 cpp include defi 阅读全文
posted @ 2018-10-18 14:03 Patrickpwq 阅读(117) 评论(0) 推荐(0)
摘要:对于询问[i,j] 在[1..n]中我们看看小于mid的数字有多少个,显然如果个数的两倍 define N 500005 using namespace std; int n,m,a[N],rt[N 100],lson[N 100],rson[N 100],tot,sum[N 100]; void 阅读全文
posted @ 2018-10-16 23:46 Patrickpwq 阅读(97) 评论(0) 推荐(0)
摘要:这是一道好题 可以更深的理解主席树 最初的想法是 一开始 一边加入任务 一边维护时间轴 换句话说 对于每个时间点 我们都想维护一颗权值线段树(这里的权值代表着优先级Pi)相当于对于一个任务 我们要维护Ei Si棵 然而显然MLE 考虑降维 联想到主席树建树方式是通过前缀和来的 既然是求前缀和 这道题 阅读全文
posted @ 2018-10-16 22:24 Patrickpwq 阅读(150) 评论(0) 推荐(0)
摘要:我们先考虑如何比较两两的字符串 我们可以用线段树来维护哈希值 在线段树上根据二分的性质来做即可 又考虑到 每颗线段树是在之前的某颗基础上只修改了一个节点 那显然就想到了主席树 另外说说如何pushup 我们考虑这样一个字符串 abcdefg 假设当前节点左儿子是abc 右儿子是defg 由于我们的哈 阅读全文
posted @ 2018-10-16 17:32 Patrickpwq 阅读(124) 评论(0) 推荐(0)