随笔分类 -  LCA

摘要:T1转圈游戏 直通 思路: 手玩一下数据可以发现: x小朋友最终到达的位置为: (x+(m*10^k)%n)%n 可以发现: 10^k可以用快速幂求得, 这题其实是快速幂模板! 上代码: #include <cstdio> using namespace std; int n,m,k,x; int 阅读全文
posted @ 2017-10-05 20:37 夜雨声不烦 阅读(234) 评论(0) 推荐(1)
摘要:a 【问题描述】 你是能看到第一题的 friends呢。 —— hja世界上没有什么比卖的这 贵弹丸三还令人绝望事了,所以便么一道题。定义 f(x)为满足 (a×b)|x的有序正整数对 (a,b)的个数。现在给定 N,求 Σni=1f(i) 【输入格式】 一行个整数 N。 【输出格式】 一行个整数代 阅读全文
posted @ 2017-10-02 20:42 夜雨声不烦 阅读(428) 评论(0) 推荐(1)
摘要:P3398 仓鼠找sugar 224通过 860提交 题目提供者 fjzzq2002 标签 云端↑ 难度 提高+/省选- 时空限制 1s / 128MB 题目描述 小仓鼠的和他的基(mei)友(zi)sugar住在地下洞穴中,每个节点的编号为1~n。地下洞穴是一个树形结构。这一天小仓鼠打算从从他的卧 阅读全文
posted @ 2017-07-17 17:20 夜雨声不烦 阅读(158) 评论(0) 推荐(0)
摘要:2370 小机房的树 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 钻石 Diamond 2370 小机房的树 2370 小机房的树 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 钻石 Diamond 时间限制: 1 s 空间限制: 256000 KB 题目等 阅读全文
posted @ 2017-07-12 09:51 夜雨声不烦 阅读(129) 评论(0) 推荐(0)
摘要:首先Tarjan算法的基本思路: 1.任选一个点为根节点,从根节点开始。 2.遍历该点u所有子节点v,并标记这些子节点v已被访问过。 3.若是v还有子节点,继续搜索下去,否则下一步。 4.合并v到u上。 5.寻找与当前点u有询问关系的点v。 6.若是v已经被访问过了,则可以确认u和v的最近公共祖先为 阅读全文
posted @ 2017-07-11 20:34 夜雨声不烦 阅读(212) 评论(0) 推荐(0)
摘要:树上倍增. dfs序的做法: 思路: 至于代码……额……没写 树上倍增还能够用来求LCA 其中f[i,j]表示i的第2^j祖先dfs预处理f[i,j]=f[f[i,j-1],j-1]; 对于每一对x,y先将深度调成一样再枚举j逐一往上找,这两个过程都是log的 代码如下: #include <ios 阅读全文
posted @ 2017-05-20 21:38 夜雨声不烦 阅读(266) 评论(0) 推荐(0)
摘要:LCA目前比较流行的算法主要有tarjian,倍增和树链剖分 1)tarjian 是一种离线算法,需要提前知道所有询问对 算法如下 1.读入所有询问对(u,v),并建好树(建议邻接表) 2.初始化每个节点各属一个并查集,都指向自己 3.对整棵树进行dfs(深度优先搜索)遍历 每处理到一个新节点(u) 阅读全文
posted @ 2017-05-19 18:08 夜雨声不烦 阅读(155) 评论(0) 推荐(0)