摘要:
为什么BFS可以用来求权值为1的最短路? 由于我们知道Dijkstra算法肯定是正确的,那么我们可以通过证明bfs可以实现Dijkstra算法的功能,就证明了其正确性。 首先,我们知道Dijkstra算法的核心是每次从队列中取出一个最小的点,也就是小根堆的堆顶... 阅读全文
摘要:
题目详情 - L3-001 凑零钱 (30 分) (pintia.cn) 思路一(DFS):用时6ms 暴力搜索+剪枝,但要注意特判一个特殊情况 就是当所有物品的总和加起来也凑不出答案的时候 这时候会递归所有点,时间消耗最大,可能会超时 以后遇到... 阅读全文
摘要:
什么是最小步数模型: 我们知一般的DFS求最短路通常是从棋盘中的一个点a到一个点b 但这里的最小步数是把一个棋盘看做一个状态,求从状态a到状态b的最小步数 总的来说最小步数模型是求状态之间转换的最短距离。 最短路就是求点与点之间转换的最短距离。 1107... 阅读全文
摘要:
Level1 4207. 最长合法括号子序列 - AcWing题库 最长合法括号子序列的长度(序列不要求连续性) 思路一:每当有括号匹配就加入答案 每当右括号的数量大于左括号的数量的时候,就说明加上当前的右括号就是不合法的了。这时候就把匹配... 阅读全文
摘要:
题目详情 - L3-002 特殊堆栈 (30 分) (pintia.cn) Vector #include #include #include #include #include using namespace std;int n, x;string ... 阅读全文
摘要:
4378. 选取数对 - AcWing题库 一开始想到是DP了,也想到状态表示了F[i][j]表示在前i个物品当中选,j个集合。 但是不知道怎么写状态转移方程,也没看出来这其实就是一个01背包模型。 于是就暴力写了个DFS骗了一半分,顺利的TLE... 阅读全文
摘要:
题目详情 - L3-1 森森旅游 (30 分) (pintia.cn) 参考思路: 由题意得每次兑换旅行币都要将现金兑完,所以可以将拆解成两段不同的最短路,一条是从1点出发到i点代表用现金的最短路,直接dijkstra即可;另一条则是从i点到... 阅读全文
摘要:
题目详情 - L3-2 还原文件 (30 分) (pintia.cn) 代码:这道题目可以当做dfs来做(很多得26分的情况就是少判断了一种条件 例如 2 4 6 8 9 2 4 6,3个序列分别是:2 4 6 | 9 | 2 4 6 8当你判断到... 阅读全文
摘要:
4316. 合适数对 - AcWing题库 通过数据范围推断复杂度应该是O(nogn) 看到静态求和,可以联想到前缀和,于是我们先求出整个序列的前缀和数组sum。 这时脑中顿时蹦出一个想法:枚举右端点,然后二分出第一个满足条件的左端点。 二分的... 阅读全文
摘要:
贪心 + 递归 D-和谐之树_"华为杯" 武汉大学21级新生程序设计竞赛 (nowcoder.com) 这题我在做的时候根本没有理解清楚题意,也可能是受到样例解释的影响? 就比如n=10的时候,我就认为最大的节点编号是21,因为[1,10]一共可... 阅读全文