动态树(LCT)错误总结
2018-03-25 10:38
316 查看
汇总犯过的一大堆神奇错误。
访问儿子结点时,没有
例:
解决方法:
写完后搜索所有
解决方法:
使uu结点懒标记意义表示uu的儿子结点需更新,而不是uu需要更新。
自定义空指针
例:
用翻转懒标记更新时,直接将标记改为
访问儿子结点时,没有pushDown()
,左右儿子未翻转。
例:Node *findRoot(Node *u) { Access(u); Splay(u); //这里漏掉一句:u->pushDown(); while(u->ch[0]!=null) { u=u->ch[0]; u->pushDown(); } return u; }
解决方法:
写完后搜索所有
->ch,检查是否之前已
pushDown()
pushUp()
更新时,儿子结点未更新,仍存在懒标记
解决方法:使uu结点懒标记意义表示uu的儿子结点需更新,而不是uu需要更新。
懒标记下传后未清空
例:void pushDown() { ch[0]->Update(add,rev); ch[1]->Update(add,rev); //漏了以下两句 //add=0; //rev=false; }
自定义空指针null
内部信息错误
例:null->fa=null->ch[0]=null->ch[1]=null; null->siz=1;//这里应=0
Cut操作判断删除的u->v边是否存在时,判断错误
例:void Cut(Node *u,Node *v) { makeRoot(u); Access(v); Splay(u); u->pushDown(); if(u->ch[1]!=v)//还需判断 ||v->siz!=1 return; u->setChild(null,1); v->fa=null; }
用翻转懒标记更新时,直接将标记改为true
,没有取反
void Update(bool re) { if(this==null) return; if(re) { swap(ch[0],ch[1]); rev=true;//应为rev^=1 } }
持续更新……
相关文章推荐
- 动态树LCT总结
- 动态树~LCT总结
- 错误总结1,动态加载部分不能显示的原因
- 每日总结(二)C#判断输入内容为数字、Sharepoint回收应用程序池错误、Asp.Net 会发或回调参数无效、DropDownList动态绑定且设置默认选择项
- 每日总结(二)C#判断输入内容为数字、Sharepoint回收应用程序池错误、Asp.Net 会发或回调参数无效、DropDownList动态绑定且设置默认选择项
- 专题总结:动态树 LCT(Link cut tree)
- spring boot 错误处理总结
- sql server 错误总结
- IT软件创业之 -- 曾经热血沸腾软件创业、技术带人犯下的幼稚错误总结
- 对数组进行malloc动态分配的一些总结
- iOS之网络请求及各类错误代码含义总结(包含AFN错误码大全)
- JSP数据交互习题错误总结
- php的错误与异常处理(总结)
- VC6.0移植到VS2008后的错误总结
- Android 配置子Module混淆时遇到的错误,和一些零散技术点总结
- atitit.按钮光标滑过高亮切换以及其他动态效果的实现css html js --attilax总结
- IE6,IE7下js动态加载图片不显示错误
- java_db常见错误总结
- 常见的与内存有关的错误总结
- undefined reference to 错误的解决方法总结