
2016提高
不会JAVA的运营不是好数分
这个作者很懒,什么都没留下…
展开
-
树上点差分
树上点差分 https://www.luogu.com.cn/problem/P3128 题意理解 一棵树,根节点为1 大量修改操作,但是每次是将两个点之间的路径上的所有点,都增加1 一个查询操作,问最后哪一个点上的值最大。 算法解析 使用树上差分+最近公共祖先即可。 就是一个点上的最后权值,就是统计子树和的过程。 树上差分 举个例子:有一个树。设原树如下,现要将2,3之间路径上的所有点的权值增加3,设原权值均为0。可以求任一个点的权值。 现在有两个想法: 暴力:一个是将2,3路径上的所有原创 2020-07-13 00:22:00 · 369 阅读 · 1 评论 -
倍增求LCA
倍增求LCA 参考 LCA是什么 LCA(Least Common Ancestors),即最近公共祖先,是指在有根树中,找出某两个结点u和v最近的公共祖先。 ———来自百度百科 在这棵树上,7和5节点的最近公共祖先就是 3。 如何求LCA 那么如何求呢?详细的思考路径可以参考洛谷。这里只说下方法: 这里还需要引入: f(i,j) 表示 节点i 的第 2^j 老的祖先是哪个节点。 这里举个例子:f(17,0) = 14 (也就是17的父亲节点) f(17,1) = 10 步骤如下: 求两个点A,B的L原创 2020-07-09 23:56:31 · 443 阅读 · 0 评论 -
2016d1t1 P1563 玩具谜题
2016d1t1 P1563 玩具谜题 题意 https://www.luogu.com.cn/problem/P1563 题意解析 题目很简单: 有n个人围成一圈。有的朝内,有的朝外。(朝内和朝外的左右是相反的) 从第一个人开始数指令m条,其中指令格式为 向左 3个。 类似这样。 找到眼睛的位置。 想法 既然是一个圈,那必然想到的是利用余数的方法来求。 规定朝内为1,朝外为-1 规定寻找方向:朝左为-1,朝右为1 则行进位置 = 方向 * 朝向 * 步数 + n(人数) 当然防止多加 则行进原创 2020-07-07 09:05:05 · 149 阅读 · 0 评论