![](https://img-blog.csdnimg.cn/4206b9169cbe4d5382406fc07ad03e29.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
ACM
文章平均质量分 70
ACM有关算法总结
JJJJJustinnnnn
我是一个无聊的理工男
展开
-
ACM记忆化DFS与基于优先队列的BFS
那么就要。原创 2024-03-14 23:46:28 · 647 阅读 · 1 评论 -
ACM组合博弈SimpleGameTheory
有两个玩家。有三堆扑克牌。游戏双方轮流操作。玩家每次操作是选择其中某一堆牌,然后从中取走任意张。最后一次取牌的一方为获胜方。原创 2024-03-11 23:17:33 · 759 阅读 · 0 评论 -
ACM二分匹配BipartiteMatching
(想象男女婚配问题,男生在左,女生在右)先看左侧的男生,对于第一个男生,在右边查找他所能匹配的第一个女生,并且连接。假如出现下面的情况:一个男生(记为男1)发现他所能匹配的第一个女生(记为女1)已经有匹配对象(记为男2)了,那么就以女1的匹配对象(男2)为研究对象,看男2除了当下的这个匹配对象以外,接下来还有没有可以匹配的对象,假如下一个女生(记为女2)也有了匹配对象,那么就递归下去(以女2的匹配对象(记为男3)为研究对象……所以最小路径数就等于。:机器A的模式作为左边的点,机器B的模式作为右边的点。原创 2024-03-10 22:49:15 · 784 阅读 · 1 评论 -
ACM深度优先搜索DFS
理解“回溯”操作十分重要。每次递归调用结束之后随着进行到下一个数字,都把上一个数组在标记数组中对应的位置变成0,所以在下一步才可以使用这一个数字。:转化为子问题(假如前k个数已经排好,那么剩下的问题就是其余k-1个数的全排列)。:剪枝:可走的步数小于时间、奇偶性。考虑每一步该怎么走(往除了墙或是已经走过的路的四个方向上走)。下图中:2 7 1 6 5 3 8 9 4。下图中:1 7 5 6 3 2 8 4 9。下图中:1 5 3 6 7 4 9 8 2。,左子树中任何一个元素都比右子树靠前。原创 2024-03-09 23:39:07 · 436 阅读 · 0 评论 -
ACM宽度优先搜索BFS
当访问到一个节点时(队列不空时),先访问该节点,再将该节点的左右儿子放入队列。:BFS的同时使用一个数组来描述骑士一步可以走到的地方,这样就可以使用一层循环来访问所有骑士从一个点到另一个点的可能。:把状态定义为三个杯子中的可乐量以及步骤数,同时使用一个三维数组做标记(也可以使用二维),一直迭代到目标状态。)),当到达目标楼层后就停止迭代。:使用楼层的层次遍历(根据每一层楼的树状结构可以形成一个。),同时使用一个数组来标记一个楼层是否曾经到达过(用来。(FIFO),队头删除元素,队尾加入元素。原创 2024-03-05 22:52:24 · 420 阅读 · 1 评论 -
ACM最短路径问题
把相邻的城市都初始化为距离起点(虚拟起点)为0的点,再使用Dijkstra算法即可。V0转到V1再到剩下所有终点的距离。V0直达剩下所有点的距离。曾经记忆下来的的最短路径。:Dijkstra算法。一个N*N的二维数组。,对应的数值代表一条。从原点经过V2再到达。原创 2024-03-04 23:21:03 · 353 阅读 · 1 评论 -
ACM背包算法KnapsackAlgorithm
f[i][j]表示前i件物品放入容量为j的背包的最大价值。(要枚举每个状态的值)原创 2024-03-03 23:49:42 · 900 阅读 · 0 评论 -
ACM动态规划DP
要想求n层数塔的最优解,那么就假设从下往上的n-1层数塔的最优解已经知道,那就只需要做一次大小判断即可。下来),即:从当前的数字往前遍历,找比自己小的数,在他最长有序子序列的长度的基础上+1,最后取最大的长度就行了。:由疲劳度公式(a-b)^2,每次搬的物品一定是重量相邻的物品(画数轴证明)。1:(贪心算法)从头开始遍历数组,每次向后找比自己小的数,包含进来。:遍历数组,每次考虑以当前的数结束的最长有序子序列的长度(使用另一个数组。物品n+前(n-2)个物品选(m-1)对的最优解。原创 2024-03-03 22:46:13 · 464 阅读 · 0 评论 -
ACM递推求解
初始状态不大于N-1的状态最终的状态F(N)原创 2024-03-02 23:00:40 · 854 阅读 · 0 评论 -
ACM标准模板库STL
先进后出(FILO)一个有序的容器,里面的元素都已经排列好,支持插入、删除、查找等,而且所有的操作都是严格在log(n)时间内完成,效率非常高。(优点:自动去重并且排序)(但是只能使用迭代器访问)map是一个“键值对”(key/value)容器,迭代器可以修改value但不可以修改key。map会根据key自动排序。map可以使用键(key)作为下标(而非数组中的位置)来获取一个值。用于生成序列的全排列。若当前已到最大字典序,那么就返回false(如例中的{3, 2, 1})原创 2024-03-01 22:53:52 · 1878 阅读 · 1 评论 -
ACM并查集DisjointSet
将N个对象划分为不相交集合,在每个集合中,选择其中某个元素代表所在的集合。原创 2024-02-26 22:35:42 · 457 阅读 · 0 评论 -
ACM贪心算法GreedyAlgorithm
从左到右每次比较左右两个数,假如左边的数大于右边的数,那么就把左边的数删掉(做标记),这样就可以使得改动之后的数小于原来的数。可图:一个非负整数组成的有限序列如果是某个无向图的度序列,则称该序列是可图的。:将田忌和大王的🐎都由好到劣排序,每次比较一匹🐎,假如田忌的🐎好于大王的🐎,那么就使用这一匹🐎;否则就使用最差的🐎。:(反证法证明:至少存在一个时间序列,他包含最早结束的事件)最长时间序列一定包含最早结束的事件。:度序列:若把图G所有顶点的度数排成一个序列S,则称S为图G的度序列。:保证高位的数尽量小。原创 2024-02-26 21:44:03 · 376 阅读 · 1 评论 -
ACM数学基础
假如 SUM = n * (n + 1) / 2;(先做乘法后做除法), 那么有可能在除法之前就已经超出int范围。原创 2024-02-25 22:27:31 · 294 阅读 · 0 评论