随笔分类 -  读书笔记

通过读书得到的问题、实践和总结
摘要:拓展KMP解决的问题是给两个串S和T,长度分别是n和m,求S的每一个后缀子串与T的最长公共前缀分别是多少,记作extend数组,也就是说extend[i]表示S[i,n-1](i从0开始)和T的最长公共前缀长度。 需要注意的是如果extend[i]=m,即S[i,n-1]和T的最长公共前缀长度是m( 阅读全文
posted @ 2018-07-23 16:42 Reqaw 阅读(1113) 评论(0) 推荐(2)
摘要:KMP算法是一种改进的模式匹配算法,相比于朴素的模式匹配算法效率更高。下面讲解KMP算法的基本思想与实现。 先来看一下朴素模式匹配算法的基本思想与实现。 朴素模式匹配算法的基本思想是匹配过程中如果该位置相等,继续匹配各自的下一位,直至匹配完成,或者出现一位不匹配,如果该位置不相等,主串的匹配位置返回 阅读全文
posted @ 2018-07-21 15:52 Reqaw 阅读(1925) 评论(0) 推荐(0)
摘要:式子a≡b(mod n)称为a和b关于模n同余,它的充要条件是a-b是n的整数倍,即a-b=zn(其中z取整数)。 而模线性方程组ax≡b(mod n)可以写成ax-b=zn(其中z取整数),移项可得 ax-zn=b,也即二元一次方程ax+by=c的形式,利用拓展欧几里得算法(extgcd)可以求解 阅读全文
posted @ 2018-07-20 20:28 Reqaw 阅读(1386) 评论(0) 推荐(0)
摘要:在二分图匹配中有最大匹配问题,使用匈牙利算法或者网络流相关算法解决,如果给每条边增加一个权值,求权值和最大的匹配方案就叫做最大权匹配问题。其实之前所说的最大匹配就是权值为1的最大权匹配。 求最大权完备匹配常用的方法是Kuhn-Munkres算法(简称KM算法),其主要思想就是通过顶标将求最大权匹配问 阅读全文
posted @ 2018-05-17 22:44 Reqaw 阅读(726) 评论(0) 推荐(0)
摘要:HDU 2089 不要62 题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=2089 Problem Description 杭州人称那些傻乎乎粘嗒嗒的人为62(音:laoer)。杭州交通管理局经常会扩充一些的士车牌照,新近出来一个好消息,以后上牌照,不 阅读全文
posted @ 2018-04-26 11:46 Reqaw 阅读(485) 评论(0) 推荐(1)
摘要:1 /* 2 问题 根据键盘的位置向右错一位输出,其中不会出现QAZ等字符 3 解题思路 建立一个字符串常量,注意回车左边为一个',和\存储的时候要写两个\否则编译器不识别 4 */ 5 #include 6 #include 7 int main() 8 { 9 char list[]="`1234567890-=QWERTYUIOP[]\\ASDFGHJKL;'Z... 阅读全文
posted @ 2018-04-11 23:48 Reqaw 阅读(272) 评论(0) 推荐(0)
摘要:1 /* 2 竖式问题 输入一个特定的数字集合,计算并输出所有满足要求的竖式。要求是abc*de(一个三位数乘以一个二位数)的竖式中 3 出现的所有数字均在集合中。输出时要个按照格式。 4 解题思路 首先读入数字集合,枚举每个三位数乘以每个二位数,如果满足条件输出并计数。 5 6 另外读书总结 7 int cou=0; 8 printf("%d %d %d\... 阅读全文
posted @ 2018-04-10 20:12 Reqaw 阅读(517) 评论(0) 推荐(0)
摘要:1 /* 2 问题 输入矩阵的规模n,先将数按照下,右,上,左的顺序填入矩阵,再按照这样的顺序取出。 3 解题思路 模拟,按照笔的顺序存入取出,注意初始化的时候一定将矩阵全部初始化。 4 */ 5 #include 6 #include 7 const int N=1001; 8 int a[N][N],b[N][N]; 9 int main() 10 { 11 i... 阅读全文
posted @ 2018-04-10 19:05 Reqaw 阅读(354) 评论(0) 推荐(0)
摘要:首先需要说明的是BFS算法(广度优先算法)本质上也是枚举思想的一种体现,本身效率不是很高,当数据规模很小的时候还是可以一试的。其次很多人可能有这样的疑问,使用搜索算法的时候,到底选用DFS还是BFS,博主觉得对于最短路搜索来说是都可以的,数据规模不大,广搜解决最短路的效率要高一些,还有对于搜索过程中 阅读全文
posted @ 2018-03-28 21:09 Reqaw 阅读(2409) 评论(0) 推荐(0)
摘要:首先,需要说明的是搜索算法本质上也是枚举的一种,时间复杂度还是很高的,遇到问题(特别是有水平的比赛上),不要优先使用搜索算法。 这里总结一下DFS算法: 1、从图中某个顶点出发,访问v。 2、找出刚访问过的顶点的第一个未被访问的邻接点,访问该顶点。以该顶点为新顶点,重复此步骤,直到刚访问的顶点没有未 阅读全文
posted @ 2017-10-28 10:47 Reqaw 阅读(4521) 评论(0) 推荐(2)
摘要:首先明确一下使用并查集能够解决的问题:给出n个人,给出n个人中哪两个人有关系,使得这些人分成一个个团体,问有多少个独立团体。 其次,总结一下并查集算法,并查集通过一个一维数组来实现,刚开始的时候,森林的每个点都是孤立的,然后通过一些关系,逐渐将这些树合并成一棵大树。 其实,合并的过程,就是“认爹”的 阅读全文
posted @ 2017-10-18 20:14 Reqaw 阅读(410) 评论(0) 推荐(0)
摘要:首先得知道什么是二分图匹配问题,给出一个二分图,每个人与另外的一个或者多个人存在某种关系 问将他们两两配对的对,最多能配成多少对。 其次,明确几个专业名词。 最大匹配:边数最多的匹配成为最大匹配。 最大匹配数:最大匹配的边数称为边独立数或者匹配数。 最大点独立集:顶点数最多的点独立集称为最大点独立集 阅读全文
posted @ 2017-10-13 18:06 Reqaw 阅读(489) 评论(0) 推荐(0)
摘要:首先,图论中的最小生成树问题就是给出一个大小为n*m邻接矩阵或者n个顶点m条边(包含每条边路径花费)的数据,让我们计算使得这n个顶点直接或间接联通所需要的最小花费。 其次,所给的数据分为稀疏图和稠密图,对于一个图,理论上n个顶点可以有n*(n-1)条边,如果该图中存在的边数m远小于n*(n-1),可 阅读全文
posted @ 2017-09-26 20:38 Reqaw 阅读(5934) 评论(0) 推荐(0)