算法
文章平均质量分 84
想七想八不如11408
一只积极进取的菜鸟
展开
-
【算法】环形纸牌均分问题
但是,当我们交换两个摊点的时候,只会改变要么行要么列的状态。(感觉这个递推思想有点类似于费解的开关,每个灯能改变上下左右相邻的状态,第一行的灯只能由第二行改变,一旦第一行灯的状态确定了,则第二行、第三行......第n行的状态也就确定了。那么,1只能跟2交换以达到target,1换好之后2就只能跟3交换(因为如果1跟2又换了1就不是target了,而且说明前面做了无用功,答案一定不是最优的)。首先,我们看只有两个点的情况,在这种情况下我们选[1,2]的任何一个位置都是一样的,总和就是这段区间的长度,对吧。原创 2024-03-24 00:47:06 · 916 阅读 · 0 评论 -
【字符串匹配算法】KMP、哈希
C++中提供子串查询的函数可以使用类的相关方法来实现。findsubstrcomparefind函数的时间复杂度取决于字符串的长度和待查找的子串的长度。在C++标准库中,的find函数使用的是一种称为"Boyer-Moore-Horspool"算法的快速字符串搜索算法。在最坏情况下,算法的时间复杂度为O(mn),其中n是字符串的长度,m是待查找的子串的长度。这种情况发生在待查找的子串中的每个字符都与字符串进行了比较,但最终没有匹配成功。时间复杂度是不如KMP的。原创 2023-10-18 22:37:44 · 179 阅读 · 0 评论 -
【DP】学习之背包问题
完全背包 和 01背包唯一不同就在于如果当前这个物品可以装入,在下一次选择中x不用+1(因为物品是无限多的,还可以再次选择)如果正序枚举体积,就会让物品被拿多次,从而违反规则,这里m从m走到0,的原因是只让每个物品最多拿一次。但完全背包不用考虑这个问题,因为它本身就能拿多次~01 背包优化到一维 :逆序枚举体积。完全背包优化到一维 :正序枚举体积。所以完全背包优化到一维可以正序枚举。这里补个图,DFS是自顶向下推的。用一维数组代替二维数组。dp的递推是从下往上。原创 2023-05-06 21:15:31 · 397 阅读 · 0 评论 -
【高精度算法】
【代码】【高精度算法】洛谷上写数楼梯问题,怎么都过不了,因此知道了高精度算法。int 数量级 1e9long long 数量级 1e18unsighed long long 数量级1e19原创 2023-03-26 00:02:53 · 58 阅读 · 0 评论 -
【DFS】学习
递归实现指数型枚举题目链接:92. 递归实现指数型枚举 - AcWing题库从 1∼n这 n个整数中随机选取任意多个,输出所有可能的选择方案。输入格式输入一个整数 n。输出格式每行输出一种方案。同一行内的数必须升序排列,相邻两个数用恰好 1 个空格隔开。对于没有选任何数的方案,输出空行。本题有自定义校验器(SPJ),各行(不同方案)之间的顺序任意。数据范围1≤n≤15输入样例:3输出样例:322 311 31 21 2 3原创 2023-03-13 23:47:14 · 222 阅读 · 0 评论 -
【DP】初步学习
动态规划就是:给定一个问题,我们把它拆成一个个子问题,直到子问题可以直接解决。然后把子问题的答案保存起来,以减少重复计算。再根据子问题答案反推,得出原问题解的一种方法。入门思路:dfs暴力->记忆化搜索->递推DP。原创 2023-03-24 00:25:19 · 173 阅读 · 1 评论 -
【BFS】学习
只要队列里有数就弹出头结点,然后遍历头结点的四个方向,如果有点满足题目条件,就压入队列中;当使用邻接表时,DFS的时间复杂度也是O(V+E),当使用邻接矩阵时,DFS的时间复杂度也是O(V^2),其中V表示顶点,E表示边。当使用邻接矩阵时,BFS的时间复杂度为O(V^2),其中V表示顶点,E表示边。BFS先找到的一定最短,但如果是加权的路就会出现问题,就应采用Dijkstra最短路径算法解决加权路径的最短路。2.从A出发到达B的最短路径(如果数据小,20(数组行列数)以内,DFS也行。原创 2023-03-16 17:45:08 · 409 阅读 · 0 评论