可持久化数据结构
YihAN_Z
ただのあほです
展开
-
BZOJ 3221 [Codechef FEB13] Obserbing the tree树上询问 树链剖分 主席树维护区间加等差数列
题目大意:给出一棵树,每个结点初始均为0,要求支持以下操作:路径加等差数列,询问路径上结点权值和,回到之前的某个版本调到吐血。很明显可以看出需要树链剖分+主席树来解决,由于需要在主席树上区间修改所以标记永久化。 区间维护等差数列需要在每个结点上维护 首项 和 公差。 树链剖分时在路径上加等差数列需要讨论,细节比较多,详见代码。 (我看错题了..注意回到某个版本并不舍弃在这之间的版本)#incl原创 2017-04-02 00:15:30 · 715 阅读 · 0 评论 -
BZOJ 2989 数列 变换坐标系 主席树
题目大意:给定一个长度为n的正整数数列a[i]。 定义2个位置的graze值为两者位置差与数值差的和,即graze(x,y)=|x-y|+|a[x]-a[y]|。 2种操作(k都是正整数): 1.Modify x k:将第x个数的值修改为k。 2.Query x k:询问有几个i满足graze(x,i)<=k。因为可持久化数据结构的流行,询问不仅要考虑当前数列,还要考虑任意历史版本,即统计任原创 2017-04-14 00:04:37 · 531 阅读 · 0 评论 -
BZOJ 3218 a + b Problem 网络流 可持久化线段树优化建图
#include <cstdio>#include <cstring>#include <algorithm>#include <queue>#define N 200005#define INF 1000000000using namespace std;int n;namespace NetworkFlow { struct Edge { int to,n原创 2017-06-30 17:22:28 · 694 阅读 · 0 评论 -
BZOJ 3932 [CQOI2015] 任务查询系统 可持久化线段树
题目大意:有n个任务持续m秒,每个任务从si秒开始到ei秒结束且有一个优先级pi,有m个询问,回答第xi秒时正在执行的任务中优先级前k小和,强制在线。根据时间的变化,任务会开始或结束。我们想知道任一时刻任务的执行情况,这里我们就需要用到可持久化数据结构。对于这道题,我们可以维护一个权值线段树1。可持久化数据结构,暴力地想就是每个版本完全复制一个保存起来,但是空间不够用。 如果每次只是修改原创 2017-01-03 21:28:39 · 754 阅读 · 3 评论