D. Explorer Space 一点一点把题目理顺。看看哪些是可以推断出来的。 对于 dp 的题目而言,要一点一点去分析其中什么东西是可以递推的,正如这道题中 \(dp[x][y][k]=min\{dp[xx][yy][k-1]+d[x][y][i]\}\) 然后再进行记忆化搜索即可。 // C ...
分类:
其他好文 时间:
2021-04-27 14:17:50
阅读次数:
0
原题链接 考察:记忆化搜索 思路: 可用递推和记忆化搜索两种方式. 1 #include <iostream> 2 #include <cstring> 3 #include <algorithm> 4 #include <cstdio> 5 using namespace std; 6 const ...
分类:
其他好文 时间:
2021-02-19 13:15:23
阅读次数:
0
Aimee 记忆化搜索非常好写, 尤其是从一个朴素的搜索开始改造。 sum是要记录的,但是没必要存在状态里 直接统计一下当前节点是第几步之后的方案数 虽然说时间复杂度没有朴素的优美 但是不会MLE啊 #include<iostream> #include<cstdio> #include<cstri ...
分类:
其他好文 时间:
2021-01-12 11:00:15
阅读次数:
0
传送 这题乍一看觉得无从下手,但只不过是把两个知识点捏到一块罢了。 判断多个串是否为一个串的子串,首先想到AC自动机:把$K$个模板串建成AC自动机,然后在上面dp(记忆化搜索)。 AC自动机上的每一个节点到根的路径都代表一个前缀,所以令$dp[i][j]$表示模板串匹配到节点$i$,文本串匹配到长 ...
分类:
其他好文 时间:
2021-01-05 10:57:25
阅读次数:
0
D - Number of Multisets 题目大意 给出 \(n\) 和 \(k\) ,问 \(n\) 个数字的和为 \(k\) 的方案数有多少。 数字可以取${1,\frac{1}{2},\frac{1}{4},\frac{1}{8},\frac{1}{16},....}$ 题解 考虑两种方 ...
分类:
其他好文 时间:
2020-12-11 11:57:07
阅读次数:
3
1、深度优先搜索dfs 在搜索树上的表现形式为先序遍历。 2、广度优先搜索bfs 在搜索树上的表现形式为层序遍历。 3、记忆化搜索 在某些位置需要被多次计算时,记录第一次计算的答案,后续可以省去重复计算的复杂度。 4、剪枝 搜索的瓶颈毫无疑问在于时间,合理的剪枝可以提高时效,有时候甚至可以牺牲一些正 ...
分类:
其他好文 时间:
2020-11-25 12:19:56
阅读次数:
4
5556. 可以到达的最远建筑 刚开始写得时候感觉像贪心,但没分析好不敢写,自己写了个记忆化搜索,后来看讲解把贪心法给补上 记忆化搜索 const int MAXN = 1e5+50; class Solution { public: int dp[MAXN]; int dfs(int now, v ...
分类:
其他好文 时间:
2020-11-01 22:29:28
阅读次数:
84
原题: 挖地雷 时间限制: 1 Sec 内存限制: 125 MB 题目描述 在一个地图上有N个地窖(N≤20),每个地窖中埋有一定数量的地雷。同时,给出地窖之间的连接路径。当地窖及其连接的数据给出之后,某人可以从任一处开始挖地雷,然后可以沿着指出的连接往下挖(仅能选择一条路径),当无连接时挖地雷工作 ...
分类:
其他好文 时间:
2020-10-26 11:25:48
阅读次数:
18
这篇文章主要讨论了DAG上dp和树形dp DAG上dp DAG上的dp一般有记忆化搜索与拓扑排序两种方法来实现。 食物链 食物链 两者时间复杂度都是线性的 拓扑排序解法: #include <iostream> #include <queue> using namespace std; const ...
分类:
其他好文 时间:
2020-09-04 17:25:19
阅读次数:
61
剑指Offer中的动态规划除了一题hard(正则表达式匹配)都比较简单。 连续子数组的最大和 这道题可以作为线性dp的模板。 用dp[i]表示以元素nums[i]为结尾的连续子数组最大和。 当以nums[i-1]为结尾的数组和(dp[i-1])大于0,对于以nums[i]为结尾的子数组(dp[i]) ...
分类:
其他好文 时间:
2020-07-31 22:58:15
阅读次数:
102