![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
树状数组
lalala???
这个作者很懒,什么都没留下…
展开
-
E. Split The Tree HDU - 6504
题目大意:给你一个树,每个节点上都有一个权值,把这棵树分成两棵树,问每一棵树的不同数值的个数和最大。 题解:首先dfs序,如果查询所有子树,会把两棵树分成三个区间,就不能查询第二课树的不同数值的个数,所以复制此序列放在第一次的后面,因为是离线的,可以使用树状数组维护区间不同数值的个数,对于当前r位置把此位置加上树状数组中,如果前面有相同的值,那么把前面的那个位置删除,然后查询此r位置的l就能找到...原创 2019-05-06 16:29:12 · 311 阅读 · 0 评论 -
菜菜种菜
题目链接:https://www.cometoj.com/contest/58/problem/D?problem_id=2758 题解:对于每一个点维护离它最近的左右点,然后对于每次询问,标记而且按照r排序。树状数组维护每一点为左端点开始的区间。用优先队列维护每一个右端点,如果树状数组插入到当前r的时候删除右端点为当前r的区间。 代码: #include <bits/stdc...原创 2019-08-10 19:35:30 · 237 阅读 · 0 评论 -
G. Indie Album
题解: 字典树原本的串,ac自动机询问的串,预处理答案,树链剖分+树状数组处理fail树,dfs寻找所有串,统计答案。 代码: #include <bits/stdc++.h> using namespace std; const int maxn=4e5+1005; vector<pair<int,int> >g[maxn]; int tree[ma...原创 2019-09-10 16:18:37 · 209 阅读 · 0 评论