代码刷题
Coding Test
一碗姜汤
科学的世界谈不上真正的理解,你只是去习惯它。
展开
-
【PAT顶级】1003 Universal Travel Sites(35)[网络最大流,非递归dfs]
【代码】【PAT顶级】1003 Universal Travel Sites(35)[网络最大流,非递归dfs]原创 2024-02-03 18:21:34 · 419 阅读 · 0 评论 -
【PAT甲级】1179 Chemical Equation(30分)[dfs,搜索与回溯,排序]
测试点2是关于反应物是否存在的,如果没判断反应物是否存在则测试点2错误。原创 2024-01-21 19:24:00 · 984 阅读 · 0 评论 -
【PAT甲级】1178 File Path(25分)[文件树,模拟,unordered_map]
用一个哈希value来指定节点的id,通过一个last记录每个节点id(此时作为last的下标)的父节点是谁。原创 2024-01-19 07:05:38 · 452 阅读 · 0 评论 -
【PAT甲级】1177 Subsequence in Substring(25分)[判断子序列,暴力,双指针]
【代码】【PAT甲级】1177 Subsequence in Substring(25分)[判断子序列,暴力,双指针]原创 2024-01-18 18:04:25 · 462 阅读 · 2 评论 -
【PAT甲级】1176 The Closest Fibonacci Number(20分)[斐波那契递推]
【代码】【PAT甲级】1176 The Closest Fibonacci Number(20分)[斐波那契]原创 2024-01-18 11:42:17 · 389 阅读 · 0 评论 -
【PAT甲级】1175 Professional Ability Test(30分)[dijkstra(优先队列),拓扑排序]
【代码】【PAT甲级】1175 Professional Ability Test。原创 2024-01-16 13:18:50 · 446 阅读 · 0 评论 -
【PAT顶级】1001 Battle Over Cities - Hard Version
刚接触PAT顶级的题目,感觉困难的点在于,对题目能够有一个准确的把握没那么容易。到底用哪种算法思想也需要花很多时间甄别。再者就是锻炼编码能力,后期的优化真的很重要,在比较不同的实现方式的优劣的过程中,精简我们的代码。下面这版代码,我把并查集拆掉了,并取消了重载小于号,转而用上了匿名函数。原创 2023-08-23 13:22:39 · 82 阅读 · 0 评论 -
【PAT甲级】1173 How Many Ways to Buy a Piece of Land(25分)[搜索与回溯]
不行,还是那个问题,板块要求连续,不好推出状态转移方程。不行,因为板块要求连续,不能简单拆分成递归子问题。不行,朝两个方向不太好控制。原创 2024-01-04 19:18:53 · 402 阅读 · 0 评论 -
【PAT甲级】1174 Left-View of Binary Tree(25分)[层序遍历,建树模板]
但需要额外注意,自己写的时候,实现,那么随着队列元素不断弹出,层序遍历需要有一颗二叉树,又。,取每层的第一个元素。了,cur从0开始。原创 2024-01-06 11:38:52 · 385 阅读 · 0 评论 -
62.卖菜2(差分约束 最短路)
有上述的认知之后,我们就可以发现,求x1的最小值,等价于求s0-s1的最大值,等价于求1点到0点的最短路。但是我们只会做从一个点到所有点的最短路。解决方法就是:建一个反图,求0点到所有点的最短路即可。进一步我们再看,求C-A的最大值等价于求A到C的最短路。B-A小于等于6其实就等价于A点到B点的距离小于等于6。已知x1的基础上就可以求得x2的最小值,方法同上。以此类推,我们要求的是所有点到0点的最短路。原创 2023-04-07 12:15:26 · 52 阅读 · 0 评论 -
【OJ】635. 神经网络
做法:从拓扑排序的角度入手,用队列实现结点的遍历,在遍历的同时计算结点的状态值;用链式前向星存储有向边的信息;记录出度为0的结点为最后的输出结点。原创 2023-07-16 10:49:17 · 85 阅读 · 1 评论 -
63.电路维修(最短路)
那这道题各边的权值怎么确定?—— 给原来的边赋值为0,给变化的边赋值为1(变化的边在建图的时候就应该把所有可能的边给建立好)这是通过题目我们必须想到的性质。不论是左斜还是右斜,都不改变点的奇偶性.所以奇数节点无论如何都不可能通过边到达偶数节点。—— 要知道,图论无非就是点和边的集合。一般跟题目建模无关,是模板。原创 2023-04-07 10:40:56 · 117 阅读 · 0 评论 -
52.古老的打字机(动态规划的优化)
由此我们可知最终的点集必须是一幅斜率递增的图像。当新插入的点发现斜率比前一对点的斜率更小,如图:则。是我们要枚举的点,但是这样一来,时间复杂度就是。如果没有M,只需要每打一个字启动一次即可。如果M超级大,只需启动一次打完所有字即可。dp[i]:打印n个字符最小的磨损值。由此可知,M决定了打印机启动的次数。dp[i]的状态转移公式(从第。,从上述式子的意义我们可以知道。我们可以发现,最优点要么是。,反正不可能是凸出来的。开始寻找第一个斜率大于。原创 2023-04-07 10:42:48 · 57 阅读 · 0 评论 -
71. 朋友圈(并查集)
是常用的方法,把一颗树的层高扁平化到1层,实现高效率。因为在并查集中,我们并不关心一棵树中,谁在谁的下面,我们只关心他们的祖先是谁。也就是根节点,那不如都挂到根节点下面。查询起来就是O(1)的时间复杂度。,比的是谁的体系更加庞大,节点数量少的挂入节点数量多的门下。这样能极大程度地防止树退化成链表。但是在路径压缩面前,按秩优化所能产生的进一步效益并不高,而且代码实现更复杂。通常只用路径压缩算法足矣。原创 2023-04-07 12:45:11 · 84 阅读 · 0 评论 -
树上钟同步
【代码】树上钟同步。原创 2023-09-04 17:21:18 · 59 阅读 · 0 评论