
性能优化
文章平均质量分 88
Shirandexiaowo
这个作者很懒,什么都没留下…
展开
-
搜索总结(不包含DFS和BFS)
搜索的总结: 目录双向搜索双向同时搜索meet in the middle启发式搜索A*迭代加深搜索简介IDA*迭代加深A*回溯搜索dancing links搜索的优化(剪枝)记忆化搜索最优性剪枝可行性剪枝 双向搜索 双向同时搜索 双向同时搜索的基本思路是从状态图上的起点和终点同时开始进行 广搜 或 深搜。如果发现搜索的两端相遇了,那么可以认为是获得了可行解。 meet in the middle 它适用于输入数据较小,但还没小到能直接使用暴力搜索的情况。 主要思想是将整个搜索过程分成两半,分别搜索,最后将原创 2021-06-25 19:30:06 · 223 阅读 · 0 评论 -
第三十九天:任意两点间的最短距离
单源最短路径,求解的是从该点出发的到某一点的最短距离,但是如果我们想知道到任意一点的最短距离可不可以呢? 假设d[i][j]代表的是从i到j的最短距离,如果我们能够找到之间的关系其实就可以通过动态规划的方法求解这个问题。 但是从i到j的选择方式过于复杂,我们需要限制一个点,这个点是必过还是不需要经过,这样我们就可以只考虑两种情况,从而进行递推。 加一个维度,表示是否经过点k,d[k][i][j]代表的是使用0~k个点的情况下的最短距离,我们假设从i到j的最短路径分为,经过点k和不经过点k两种情况来考虑,如果原创 2020-11-28 18:27:30 · 277 阅读 · 0 评论 -
第三十八天:单源最短路径2
我们来观察一下单元最短路径1的代码: 我们发现,每一次我们都需要遍历所有的边,无论是否已经使用过,但其实,我们可以从上一次确定过的最短距离的点出发再去寻找,这样可以继续缩短查找的时间。 好的,因此我们可以继续简化算法,在求解最短路径最常用的算法就是:dijkstra算法 这里写目录标题准备: 准备: 这个算法需要一个标记数组来表示点是否已经使用过, int cost[MAXN][MAXN]; int d[MAXN]; bool used[MAXN]; int V,E; 初始化: void initial原创 2020-11-28 18:08:21 · 90 阅读 · 0 评论 -
每日一题:斐波那锲数列
2020.10.13开始打卡每日一题 题目:斐波那锲数列 题目一:给定斐波那锲的前两项,求第n项斐波那锲数列的值,因为数字很大,我们对结果mod(1e9+7) 题目二:给定整数N,代表台阶数,一次可以跨2个或者1个台阶,求多少种走法 题目三:假设农场中成熟的母牛每年会生一头小母牛,并且永远不会死(就是这样)。第一年,农场只有一只成熟的母牛,从第二年开始,母牛开始生小母牛。每只小母牛三年之后成熟,又可以生小母牛。给定正数N,求N年后牛的数量。 题目四:给定一个2N的网格,现在有若干大小为12的板砖(只能竖着或原创 2020-10-13 21:04:03 · 678 阅读 · 0 评论 -
第三十一天:快速幂模板
今天我们来聊一聊快速幂模板,明天和大家分享线段树问题的相关题目: 取模运算 (a + b) % p = (a % p + b % p) % p (a - b) % p = (a % p - b % p ) % p (a * b) % p = (a % p * b % p) % p 模板 网络上有很多介绍快速幂具体是啥的,这里就是整理一个模板 long long fastPower(long long base, long long power) { long long result = 1;原创 2020-10-13 20:03:08 · 266 阅读 · 0 评论