用户工具

站点工具


2020-2021:teams:legal_string:jxm2001:可持久化数据结构_1

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
2020-2021:teams:legal_string:jxm2001:可持久化数据结构_1 [2020/07/27 22:55]
jxm2001 ↷ 页面2020-2021:teams:legal_string:可持久化数据结构_1被移动至2020-2021:teams:legal_string:jxm2001:可持久化数据结构_1
2020-2021:teams:legal_string:jxm2001:可持久化数据结构_1 [2020/08/17 15:23] (当前版本)
jxm2001
行 205: 行 205:
  int lef,​rig,​fa,​d;​  int lef,​rig,​fa,​d;​
 }; };
-Node node[MAXN*20];+Node node[MAXN*30];
 int cnt,​root[MAXN<<​1],​n,​q;​ int cnt,​root[MAXN<<​1],​n,​q;​
 inline int nodecopy(int k){ inline int nodecopy(int k){
行 231: 行 231:
  update_fa(node[k].lef,​node[p].lef,​lef,​mid,​pos,​F);​  update_fa(node[k].lef,​node[p].lef,​lef,​mid,​pos,​F);​
 } }
-void update_dep(int k,int lef,int rig,int pos){+void update_dep(int ​&k,int p,int lef,int rig,int pos){ 
 + k=nodecopy(p);​
  if(lef==rig){  if(lef==rig){
  node[k].d++;​  node[k].d++;​
行 238: 行 239:
  int mid=lef+rig>>​1;​  int mid=lef+rig>>​1;​
  if(mid<​pos)  if(mid<​pos)
- update_dep(node[k].rig,​mid+1,​rig,​pos);​+ update_dep(node[k].rig,​node[p].rig,​mid+1,​rig,​pos);​
  else  else
- update_dep(node[k].lef,​lef,​mid,​pos);​+ update_dep(node[k].lef,​node[p].lef,​lef,​mid,​pos);​
 } }
 int query_id(int k,int lef,int rig,int pos){ int query_id(int k,int lef,int rig,int pos){
行 263: 行 264:
  update_fa(rt,​p,​1,​n,​node[x].fa,​node[y].fa);​  update_fa(rt,​p,​1,​n,​node[x].fa,​node[y].fa);​
  if(node[x].d==node[y].d)  if(node[x].d==node[y].d)
- update_dep(rt,​1,​n,​node[y].fa);​+ update_dep(rt,rt,​1,​n,​node[y].fa);​
 } }
 int main() int main()
2020-2021/teams/legal_string/jxm2001/可持久化数据结构_1.1595861734.txt.gz · 最后更改: 2020/07/27 22:55 由 jxm2001