随笔分类 -  大学计算机课程 / 算法设计与分析

摘要:Problem Set 7.1 Problem 7.1.1 设\(f_i\)表示将\(i\)变成\(1\)所需要的最小次数,有\(f_1=0\) 状态转移方程见代码 def min_operations(n): if n == 1: return 0 dp = [0] * (n + 1) dp[1] 阅读全文
posted @ 2025-05-15 15:56 最爱丁珰 阅读(22) 评论(0) 推荐(0)
摘要:Problem Set 6.1 Problem 6.1.1 对于没有特殊条件限制的图,Prim算法的时间复杂度为\(O(m\log n)\)(假设边比点多) \((1)\) 此时有\(m\leq nk\),所以\(O(m\log n)=O(nk\log n)=O(n\log n)\) \((2)\) 阅读全文
posted @ 2025-05-08 10:42 最爱丁珰 阅读(52) 评论(0) 推荐(0)
摘要:\(1\) \(1)\)主定理 \(2)\)主定理 \(3)\)作业 \(4)\)作业 2 作业 3 作业 4 \(1)\)把每个数hash到桶里面,然后\(O(n)\)遍历,假设遍历到了\(s_i\),计算\(h-s_i\)的hash值,看在不在桶里面(注意\(h-s_i\)不能为\(s_i\)) 阅读全文
posted @ 2025-04-23 10:11 最爱丁珰 阅读(25) 评论(0) 推荐(0)
摘要:Problem Set 5.1 Problem 5.1.1 一颗严格二叉树即可满足题意,如下 Problem 5.1.2 TE:不会,因为\([v.discoveTime,v.finishTime]∈[u.discoveTime,u.finishTime]\),所以\(u.discoveTime<v 阅读全文
posted @ 2025-04-10 10:56 最爱丁珰 阅读(27) 评论(0) 推荐(0)
摘要:P\(1\) 枚举使用多少张\(5\)分的邮票然后判断是否可以整除即可 但是第二问这个归纳比较幽默,搞不懂这种题目为什么要用归纳:n>=12时n-3的换法+一张3,归纳假设是12~n-1都能换 P\(2\) a.数学归纳法 b.与普通的汉诺塔一样,只不过现在不可以直接从\(A\)移动到\(B\)而已 阅读全文
posted @ 2025-04-08 10:22 最爱丁珰 阅读(23) 评论(0) 推荐(0)
摘要:Problem Set 4.1 Problem 4.1.1 首先判断\(A[1]\)和\(A[n]\)是不是峰值,如果是的话就找到了,如果都不是的话就说明数列在开头一段处于单调递增的状态,末尾一段处于单调递减的状态,于是可以知道在\([2,n-1]\)中一定存在峰值。接下来使用二分,设当前在区间\( 阅读全文
posted @ 2025-03-30 10:26 最爱丁珰 阅读(33) 评论(0) 推荐(0)
摘要:Problem Set 3.1 Problem 3.1.1 \((1)\)利用二分答案。令\(l,r\)表示答案存在的区间(初始化\(l=2,r=n-1\))。在每一次二分中:令\(m=\lfloor\frac{l+r}{2}\rfloor\),判断\(A[m]\)与其两个邻居之间的大小关系,若\( 阅读全文
posted @ 2025-03-15 20:46 最爱丁珰 阅读(47) 评论(0) 推荐(0)
摘要:Problem Set 2.1 Problem 2.1.1 将\(2n\)个人按照评分从大到小排序,前\(n\)个人为一组,后\(n\)个人为一组,根据贪心不难知道算法正确 def max_score_difference(scores, n): scores.sort(reverse=True) 阅读全文
posted @ 2025-03-11 18:47 最爱丁珰 阅读(29) 评论(0) 推荐(0)
摘要:Problem Set 1.1 Problem 1.1.1 \(1)\) 基本情况:若\(z=0\),则\(yz=0\),返回正确值 归纳假设:令\(d\)为一个常数,假设\(\forall z<d\),算法返回正确值 归纳步骤:若\(z=d\),利用数学归纳法 若\(z\)为偶数,则返回\(\te 阅读全文
posted @ 2025-02-23 13:42 最爱丁珰 阅读(27) 评论(0) 推荐(0)