
倍增
Rem_Inory
这个作者很懒,什么都没留下…
展开
-
【题解】洛谷P2420 让我们异或吧(LCA 倍增)
根节点不需要思考 直接初始化为1即可开一个yh数组记录异或值,在倍增的同时将答案不断与其异或即可。其他的也没啥好说的 就是个普通的倍增#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>#include<cstdlib>usin...原创 2018-08-10 15:16:40 · 257 阅读 · 0 评论 -
【题解】洛谷P1081 开车旅行(倍增)
这道题目的难度估计是noip之壁了吧。。。70分的模拟做法之前已经讲过了,现在来说说100分的倍增做法。首先,读入海拔后,我们可以预处理出从任意一个城市出发, 小A与小B能到达的下一个城市。思路就这么短,但代码非常繁琐,我感觉这部分甚至比倍增还麻烦。我们需要先将城市编号与海拔存在结构体内,对结构体按海拔高低进行排序,然后从1号城市到n号城市寻找其左右相邻的两个城市(还要这样离得最近),判断...原创 2018-08-10 21:58:35 · 462 阅读 · 0 评论 -
【题解】洛谷P3379 最近公共祖先(模板)
暴力70分思路:记录下每个点深度与其父亲节点,对于要查询的深度较深的点一直往上跳,跳到与另一个要查询的点深度相同为止。然后两个结点一起往上跳,直到两个结点相遇,输出答案。思路是正确的,但每一次只能跳一步,在很深的树操作难免会超时,这里我们使用倍增来解决这一问题。我们知道用1,2,4,8,16,……2^i这些数可以凑出任何一个数(不知道为什么看看它们的二进制,然后你就明白了),所以我们每次可...原创 2018-08-08 16:25:51 · 331 阅读 · 0 评论 -
【题解】洛谷P1613 跑路(倍增 最短路)
这道题一开始很不好想,因为是有向图且不能只求最短路后倍增,因为绕弯子可能绕出来的总路程恰好是2的倍数能1s跑完。不过题解第一篇给了很大的启发。这道题目求1号点到n号点最短几秒到达,那么我们可以把两个点之间经过的时间记下来,跑最短路就好了。开布尔类型三维数组b[x][y][k],代表从x到y是否存在一条2^k长度的路径。初始化距离为最大值,b数组为false。读入数据时,将读入的两个点之间的距离连上...原创 2018-08-08 21:09:55 · 262 阅读 · 0 评论