时间:2014-11-07 来源:

LCA在线算法ST算法 【架构设计】

求LCA(最近公共祖先)的算法有好多承接网站前端,按在线和离线分为在线算法和离线算法.

而求LCA就是把树通过深搜得到一个序列,承接网站前端然后转化为求区间的最小编号.

首先说一下ST算法.

离线算法有基于搜索的Tarjan算法较优,html切图报价而在线算法则是基于dp的ST算法较优.

这个算法是基于RMQ(区间最大最小值编号)的团队网页接活,ver[2*N],first[N],int dep) { vis[u] = true; ver[++tot] = u; first[u] = tot; R[tot] = dep; for(int k=head[u]; k!=-1; k=e[k].next) if( !vis[e[k].v] ) { int v = e[k].v ,dep+1); ver[++tot] = u; R[tot] = dep; } } 搜索得到序列之后假如我们想求4 和 7的 LCA

节点ver 1 3 1 2 5 7 5 6 5 2 4 2 1 (先右后左) 深度R 1 2 1 2 3 4 3 4 3 2 3 2 1  首位first 1 4 2 11 5 8 6 

那么我们就可以这样写深搜函数

这部分不会的可以根据上面链接研究一些RMQ

比如说给出这样一棵树.

比如上面我们找到深度最小的为2点psd切图html, "/STACK:102400000,因为遍历后序列长度为2*n-1 bool vis[N]; struct edge { int u,w,head[N]; inline void add(int u ,int w ,R[2*N],dir[N]; //ver:节点编号 R:深度 first:点编号位置 dir:距离 void dfs(int u , w = e[k].w; dir[v] = dir[u] + w; dfs(v, b = dp[i+(1<<(j-1))][j-1]; dp[i][j] = R[a]<R[b]?a:b; } } } //中间部分是交叉的. int RMQ(int l, b = dp[r-(1<<k)+1][k]; //保存的是编号 return R[a]<R[b]?a:b; } int LCA(int u , y = first[v]; if(x > y) swap(x,y); return ver[res]; } int main() { //freopen("Input.txt",stdin); //freopen("Out.txt",stdout); int cas; scanf("%d",q,&n,-1,false,v,&u,&w); add(u,w,1); /*printf("节点ver "); for(int i=1; i<=2*n-1; i++) printf("%d ",R[i]); cout << endl; printf("首位first "); for(int i=1; i<=n; i++) printf("%d ",dir[i]); cout << endl;*/ ST(2*n-1); while(q--) { int u,&u,v); printf("%d\n", b = dp[i+(1<<(j-1))][j-1]; dp[i][j] = R[a]<R[b]?a:b; } } } //中间部分是交叉的. int RMQ(int l, b = dp[r-(1<<k)+1][k]; //保存的是编号 return R[a]<R[b]?a:b; } int LCA(int u , y = first[v]; if(x > y) swap(x,y); return ver[res]; } 那么接下来的应该不是问题了.

上一个题目hdoj 2586 的AC代码:

维护一个dp数组保存其区间深度最小的下标web外包,查找的时候返回就可以了.

点击次数:4597
作者:
web前端行业资讯
Web new NewsList
微软发布WindowsServerBuild17074更新 ,,2018年01月18日凭借一个AI小功能,这款Google应用冲上苹果AppStore榜首 ,,2018年01月18日百度数据可视化实验室正式成立,发布深度学习可视化平台VisualDL ,,2018年01月18日OpenAI开源最新工具包,模型增大10倍只需额外增加20%计算时间 ,,2018年01月18日百度手机输入法8.0正式发布:支持多人语音速记 ,,2018年01月18日CSDN宣布收购TinyMind团队并升级为AI社区 ,,2018年01月18日甲骨文发布补丁修复英特尔芯片漏洞造成的问题 ,,2018年01月18日权威!官方发布CPU熔断和幽灵漏洞防范指引:附补丁下载 ,,2018年01月18日Oracle宣布新的JavaChampions ,,2018年01月18日腾讯加码区块链项目已悄然注册“以太锁”商标 ,,2018年01月18日Fedora28壁纸征集活动现已开幕:将持续至2月13日 ,,2018年01月18日苹果WebKit团队发布Speedometer2.0网页响应测试工具 ,,2018年01月18日百度输入法8.0后天发布:全感官AI输入 ,,2018年01月18日腾讯和乐高合作:共同研发智能玩具、游戏 ,,2018年01月18日HomePod上市日益临近智能音箱市场吸引力越来越大 ,,2018年01月18日3D打印脑组织?科学家正在向这一目标正在前进 ,,2018年01月18日英特尔公布修补漏洞后PC性能数据:8代CPU影响最小 ,,2018年01月18日云存储公司Dropbox秘密提交IPO申请估值超百亿美元 ,,2018年01月18日iPod之父:防手机上瘾无技术难度苹果谷歌应承担责任 ,,2018年01月18日芯片不安全英特尔云客户考虑转用AMD等对手处理器 ,,2018年01月18日2018年Java展望 ,,2018年01月18日区块链有多火?快播流量矿石遭20多万人疯抢 ,,2018年01月18日Intel搞定神经拟态芯片:模拟人类大脑、自主学习 ,,2018年01月18日阿里巴巴发布IoTConnect开放连接协议,盼推动语音互动入口普及 ,,2018年01月18日区块链火了,全球大佬们怎么看? ,,2018年01月18日Facebook正测试新功能主推本地新闻资讯 ,,2018年01月18日在GooglePlay中发现使用Kotlin开发的安卓恶意软件 ,,2018年01月18日VisualStudio201715.6预览版本2,增加新功能 ,,2018年01月18日百度陆奇:AI是5G最好的加速器 ,,2018年01月18日PinterestCEO:不同于谷歌和Facebook,我们走了第三条路 ,,2018年01月18日随想录(豆瓣网站的爬行)【移动开发】2014年12月09日Android图片缩放,压缩总结(inSampleSize,Matrix比较) 【移动开发】2014年11月18日Firefox将支持SPDY协议 ,,2016年07月24日朋友创业失败的教训【编程语言】2015年04月24日Sesson中禁止使用Cookie【编程语言】2015年06月17日云计算之你必须知道的几个会议和杂志 【编程语言】2014年12月22日深入PHPmagicquotes的详解2014年01月29日生活的大门想你敞开…… 【移动开发】2014年11月06日Makefile脚本快速入门 【编程语言】2015年08月07日JNINDK开发指南(一)——JNI开发流程及HelloWorld 【编程语言】2014年12月09日Handler学习篇 【编程语言】2015年08月15日大话设计模式C++实现-第3.4.5.11章-设计法则【编程语言】2014年12月11日zlib库在项目工程中数据的应用 【编程语言】2015年03月30日用C#实现鼠标框选效果的实现代码2014年01月30日第四章指针Pointer(入门) 【综合】2015年03月10日Javascript调用Webservice的多种方法2014年01月29日asp删除数据库记录的代码2014年01月29日C++菜鸟十月份学习心得 【综合】2014年11月10日算法研究已无望,转战web开发 【编程语言】2015年04月27日《开源框架那点事儿13》:基于开源框架做应用是未来中小型软件公司的发展趋势【互联网】2015年06月17日POJ-1691PaintingABoard(状态压缩+暴力)【编程语言】2015年07月20日HDOJ题目1698JustaHook(线段树区间更新)【编程语言】2015年04月13日不知道多线程你就就out了--【ITOO】 【移动开发】2015年06月18日jquery下json数组的操作实现代码2014年01月29日c#图片转二进制字符串二进制字符串反转成图片【移动开发】2015年07月10日IISWeb服务设置故障转移 【Web前端】2014年12月16日AndroidColorMatrix类图像颜色处理-黑白老照片、泛黄旧照片、高对比度等效果 【编程语言】2015年05月07日Android学习笔记(10)——数据适配器ArrayAdapter和SimpleAdapter 【互联网】2015年05月11日MATLAB遍历子文件夹及其下文件 【Web前端】2015年02月11日PHP程序开发范例学习之表单获取文本框的值2014年01月29日
我们保证
We guarantee
> psd效果文件手工切图,保证图片效果最好体积最小利于传输
> 100%手写的HTML(DIV+CSS)编码,绝对符合W3C标准
> 代码精简、css沉余量小、搜索引擎扫描迅速,网页打开快捷
> 应用Css Sprite能够减少HTTP请求数,提高网页性能
> 跨浏览器兼容(IE6、7、8、9,Firefox火狐,Chrome谷歌)