算法
0k-ok
这个作者很懒,什么都没留下…
展开
-
trie树讲解
如果可以,可以陪你千年不老,千年只想眷顾你倾城一笑;如果愿意,愿意陪你永世不离,永世只愿留恋你青丝白衣。首先什么是trie树呢?Trie树也叫字典树,是一种树形结构,专门用于处理在一个字符串集合中查找某个字符串。那trie树在我们实际应用中有哪些例子呢?其实trie树这种数据结构,应用十分常见,比如所我们的搜索引擎就是利用了这一个功能,要知道数据库是十分庞大的,从里面查找一个内容效...原创 2019-12-07 14:29:28 · 208 阅读 · 0 评论 -
算法之求一个数因子的个数和一个数的阶层在K进制下的位数
如果可以,可以陪你千年不老,千年只想眷顾你倾城一笑;如果愿意,愿意陪你永世不离,永世只愿留恋你青丝白衣。(一)求某数的因子个数合数的质因数分解法:任何合数都可以表示成质数的指数幂乘积的形式,如果将质数从小到大排列,那么这一分解数唯一的。例如:那么怎样求呢:文字表示就是,正约数个个数等于幂指数加一的乘积这样的求法中包含了它自身,一般算法题目中不包含,下面是程序实现:...原创 2019-11-23 12:25:35 · 284 阅读 · 0 评论 -
算法--线性筛素数,欧拉定理及其应用
有一种隐忍其实是蕴藏着的一种力量,有一种静默其实是惊天的告白。1.线性筛素数我们之前学过筛法筛素数,时间复杂度近似为o(nlog(logn)),我的这篇博客有介绍:不记得就点我。这篇讲解中也说了还有改进的空间,也说了为什么有改进的空间,在这里就不罗嗦了。线性筛的时间复杂度近似为n,而o(nlog(logn))相当于几倍的n,下面是线性筛的模板:void xxs(){ c...原创 2019-07-28 12:28:04 · 279 阅读 · 0 评论 -
算法--高斯消元法
有一种隐忍其实是蕴藏着的一种力量,有一种静默其实是惊天的告白。这个刚学时,由于大佬给我们讲了一个例题,导致我有些误解,高斯消元法应用到直接求第几大的异或数时有不少不明白的地方,看网上讲解的都是都没有我想要弄明白的地方,于是乎我就向大佬请教,总算是知道了大佬直接求解的方法了。可是理解思路只是第一步,最关键的还是由代码实现,下面有高斯消元法的详细解释,然后再贴一个模板,用的时候方便些。点我...转载 2019-07-30 08:05:20 · 364 阅读 · 0 评论 -
问题 A: 【动态规划】机器人军团(最大不下降子序列)
黑色的飞鸟掠过天空,我站在城中,看时间燃成灰烬,哗哗作响......题目描述邪狼:“怎么感觉这些机器人比我还聪明?不是说人工智能永远不能超越人类吗?”天顶星人:“你们真是目光短浅,自大而愚蠢!你要知道,如果有意识的智慧生命在无穷无尽的岁月里居然做不到无意识的宇宙曾做过的事(产生智慧生命),这就好像一只无知的猴子在琴键上跳了亿万年居然跳出了一支贝多芬第九交响曲,而有智慧的生物居然几千年也学...原创 2019-08-01 18:57:15 · 217 阅读 · 0 评论 -
算法--裴蜀定理,扩展gcd,中国剩余定理
有一种隐忍其实是蕴藏着的一种力量,有一种静默其实是惊天的告白。 1.裴蜀定理: 内容是说,对于任何整数a,b,d关于未知数和的裴蜀等式:a*u+b*v=m,有整数解时当且仅当m是a及b的最大公约数d的倍 数。裴蜀等式有解时必然有无穷多个整数解,每组解x、y都称为裴蜀数,可用扩展欧几里得算法求得。 若a,b互质,则gcd(a,b)=1,则有a*u+b*...原创 2019-07-28 11:47:06 · 453 阅读 · 0 评论 -
Bridge Across Islands(计算几何,两多边形之间的最小距离,旋转卡壳)
总在不经意的年生,回首彼岸,纵然发现光景绵长。Thousands of thousands years ago there was a small kingdom located in the middle of the Pacific Ocean. The territory of the kingdom consists two separated islands. Due to the ...原创 2019-08-05 19:41:46 · 1207 阅读 · 0 评论 -
算法----动态规划二(例题)
黑色的飞鸟掠过天空,我站在城中,看时间燃成灰烬,哗哗作响......4.最佳加法表达式题目描述:下面描述就是题意:有一个由1..9组成的数字序列.问如果将m个加 号插入到这个数字序列中,在各种可能形成的 表达式中,值最小的那个表达式的值是多少输入4 21 2 3 44 31 2 3 4 5输出1924这个我把表打出来了也,帮助理解。这里i表示到了第...原创 2019-07-31 21:00:48 · 200 阅读 · 0 评论 -
算法----动态规划一(略说+例题)
黑色的飞鸟掠过天空,我站在城中,看时间燃成灰烬,哗哗作响......递归到动归的一般转化:递归函数有n个参数,就定义一个n维数组,数组的下标是递归参数的取值范围,数组元素的值是递归的返回值,这样就可以从边界值开始,逐步填充数组,相当于计算递归函数的逆过程。动态规划的一般步骤:1.原问题分解成子问题(存储起来);2.确定状态(其中的下标):状态对应完全相同的问题。和子问题相关的各...原创 2019-07-31 19:00:58 · 264 阅读 · 0 评论 -
问题 B: 【贪心】电视节目安排
有一种隐忍其实是蕴藏着的一种力量,有一种静默其实是惊天的告白。题目描述李旭琳发现小墨老师在班上是最顽劣的学生(没有之一),但他也有安静的时候,例如在看电视的时候。像什么“谍战剧”啊,“翻拍剧”啊,“婆媳戏”啊,“后宫剧”啊都是他的最爱。他甚至会事先查询所有喜欢看的电视节目的转播时间表并煞有介事的用红蓝铅笔列出计划,然后合理安排,以看到尽量多的完整节目。输入输入数据包含多个测试...原创 2019-07-24 19:16:10 · 515 阅读 · 0 评论 -
2716: 极其简单的最短路问题(spfa裸题 or bfs)
一场游戏一场空,最终最初都由我掌控,好像一身从容,不曾有狼狈伤痛,可深夜一个人该如何相拥?题目描述小C终于被小X感动了,于是决定与他看电影,然而小X距离电影院非常远,现在假设每条道路需要花费小X的时间为1,由于有数以万计的好朋友沿路祝贺,导致小X在通过某些路不得不耗费1的时间来和他们聊天,尽管他希望尽早见到小C,所以他希望找到一条最快时间到达电影院的路。 一开始小X在1号点...原创 2019-10-11 17:11:28 · 236 阅读 · 0 评论 -
算法之----A*算法
一场游戏一场空,最终最初都由我掌控,好像一身从容,不曾有狼狈伤痛,可深夜一个人该如何相拥?第一部分:A*算法简介 写这篇文章的初衷是应一个网友的要求,当然我也发现现在有关人工智能的中文站点实在太少,我在这里抛砖引玉,希望大家都来热心的参与。 还是说正题,我先拿A*算法开刀,是因为A*在游戏中有它很典型的用法,是人工智能在游戏中的代表。 A*算法在人工智能中是一种...转载 2019-10-09 22:22:27 · 1163 阅读 · 0 评论 -
问题 A: 【高精度】加法天才(数值位数可达5000位)
总在不经意的年生,回首彼岸,纵然发现光景绵长。题目描述贝贝是一个聪明的小孩,他总喜欢玩数字加法的游戏。一天,他的数学老师为了考一考他的能力,出了一道这样的题:要求他在短时间内计算出两个大数相加的结果。这两个大数可不是普通的数字,它们是11位以上的“庞然大物”。请你编程序,帮贝贝解决这个问题。输入两行,分别是两个需要相加的数A和B,这两个数在10^11~10^100之间。...原创 2019-08-12 22:23:45 · 323 阅读 · 0 评论 -
某个区间的值发生改变----(线段树)简单模板
苍茫大地一剑尽挽破,何处繁华笙歌落。斜倚云端千壶掩寂寞,纵使他人空笑我。原文代码链接https://blog.csdn.net/qq_42754826/article/details/82817763#include<bits/stdc++.h>using namespace std;#define lc (p<<1)#define rc (p<...原创 2019-06-02 13:36:46 · 231 阅读 · 0 评论 -
C++----树状数组
苍茫大地一剑尽挽破,何处繁华笙歌落。斜倚云端千壶掩寂寞,纵使他人空笑我。树状数组引入:给出一个数组A:A[1]~A[10000];给出多个查询区间[L~R],求区间和; L RE1: 3 - 10000E2: 5 - 9999直接使用原数组时间复杂度肯定很高引入前缀和S[L]=A[1]+A[2]+…+A[L];S[R]=A[1]+A[2]+.....原创 2019-06-02 13:19:59 · 240 阅读 · 0 评论 -
某个点的值发生改变----(线段树)简单模板
苍茫大地一剑尽挽破,何处繁华笙歌落。斜倚云端千壶掩寂寞,纵使他人空笑我。求数组中某段区间更新后的和#include<iostream>#include<cstdio>#include<cmath>#include<cstring>#include<string>#include<map>#include&...原创 2019-06-02 12:37:29 · 175 阅读 · 0 评论 -
最小生成树--kruskal算法
不恋尘世浮华,不写红尘纷扰,不叹世道苍凉,不惹情思哀怨,闲看花开,静待花落,冷暖自知,干净如始。首先了解图的几个概念:连通图:在无向图中,若任意两个顶点vi与vj都有路径相通,则称该无向图为连通图。 强连通图:在有向图中,若任意两个顶点vi与vj都有路径相通,则称该有向图为强连通图。 连通网:在连通图中,若图的边具有一定的意义,每一条边都对应着一个数,称为权;权代表着连接连个顶点的代价...原创 2019-05-19 13:59:26 · 272 阅读 · 0 评论 -
算法构思--图的邻接矩阵,邻接表
不恋尘世浮华,不写红尘纷扰,不叹世道苍凉,不惹情思哀怨,闲看花开,静待花落,冷暖自知,干净如始。无向图的邻接矩阵,两个顶点有边则为权值,否则,为无穷;因为是无向图即arc[i][j] = arc[j][i],所以矩阵为对称矩阵,对角线为自己到自己的边。如果是有向图,邻接矩阵就不是对称矩阵了(很显然嘛,干嘛要说)。这里要首先初始化邻接矩阵中的数值都为无穷,然后在进行构图,往里面填权值...原创 2019-05-19 13:07:48 · 625 阅读 · 0 评论 -
贪心思想--最大会议数
如花美眷,似水流年,回得了过去,回不了当初。题目大意:首先给出会议个数,然后给出每个会议的开始和结束的时间,问最终最多能参加多少场会议。题解:如图所示,贪心嘛,不可避免要排序,这里,想到按什么排序还是有一定困难的(对我来说原创 2019-05-06 10:36:09 · 343 阅读 · 0 评论 -
二分查找
如花美眷,似水流年,回得了过去,回不了当初。这个思想还是很好理解的。就是给你一堆事先排序好的数,然后,再给你一个数让你判断是否在这一堆数中。下面还是看图上的手算模拟过程吧。有点敷衍吗?我觉得下面的代码能让你更清晰的理解二分查找的过程原创 2019-05-06 10:17:01 · 99 阅读 · 0 评论 -
回溯算法之----素数环(相邻两个数之和为素数)
如花美眷,似水流年,回得了过去,回不了当初。告诉你们不要填太大的数哟(1~16就行)10的素数环个数为480个呢!一般到16程序就运行的很慢了。/*#include <cstdio>#include <algorithm>#include <iostream>using namespace std;int main(){ ...原创 2019-05-06 10:20:40 · 1684 阅读 · 2 评论 -
YTU 2756 C++习题-归并排序
风华是一指流砂,苍老是一段年华。题目描述有数列{6 58 14 2 19 354 684 4}(1)申请一个数组q,准备存放合并后的序列(2)将原序列拆分为左序列{6 58 14 2}与右序列{19 354 68 4}(3)将左右数组分别有序排列成{2 6 14 58}及{4 19 68 354} [这一过程通过递归重复(2)~(7)实现](4)设定i,j分别为两序列的初始位...原创 2019-05-08 11:47:15 · 347 阅读 · 0 评论 -
YTU 2755 C++习题-希尔排序
风华是一指流砂,苍老是一段年华。题目描述 shell排序的基本思想是: 先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。所有距离为d1的倍数的记录放在同一个组中。先在各组内进行直接插人排序;然后,取第二个增量d2<d1重复上述的分组和排序,直至所取的增量dt=1(dt<dt-1<⋯<d2<d1),即所有记录放在同一组中进行直接...原创 2019-05-08 11:45:56 · 322 阅读 · 0 评论 -
YTU 2757 C++习题-堆排序
风华是一指流砂,苍老是一段年华。题目描述1.堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。 堆是一个近似完全二叉树的结构,并同时满足堆性质:即孩子节点的键值或索引总是小于(或者大于)它的父节点。(假定一组数据的第n(n>=0)个数是一个父节点,那么对应第2n+1和第2n+2个数便是它的孩子节点,孩子节点最多两个)2.堆排序的思想 利用大顶堆(小顶堆)...原创 2019-05-08 11:44:34 · 426 阅读 · 0 评论 -
YTU 2749 二元选择排序
风华是一指流砂,苍老是一段年华。题目描述注:本题只需要提交标记为修改部分之间的代码。C++语言方式。二元选择排序:对传统的选择排序算法改进,在一趟比较过程中,同时记录最大值和最小值位置,将最小值与第一个元素交换,最大值与最后一个元素交换,即一趟比较确定两个元素,对剩下的序列重复上述过程,直至序列为空。#include<iostream>using namespac...原创 2019-05-08 11:43:05 · 412 阅读 · 0 评论 -
YTU 2748 双向冒泡排序
风华是一指流砂,苍老是一段年华。题目描述注:本题只需要提交填写部分的代码双向冒泡从小到大排序算法描述:(1)从当前序列的第1个元素开始,对相邻元素从前往后两两比较,不满足条件(从小到大)则彼此交换,一直到序列结束。此时最后1个元素为最大值。(2)从当前序列的倒数第2个元素开始,对相邻元素从后往前两两比较,不满足条件则彼此交换,一直到序列开始。此时第1个元素为最小值。(3)将第2个...原创 2019-05-08 11:41:28 · 261 阅读 · 0 评论 -
YTU 2758 C++习题-基数排序
风华是一指流砂,苍老是一段年华。题目描述基数排序是一种分配排序,其基本思想是:排序过程无须比较关键字,而是通过“分配”和“收集”过程来实现排序。它们的时间复杂度可达到线性O(n)。基数排序所做的事情,是对N位分别进行排序。从直觉上来看,人们可能会觉得应该首先按最高有效位进行排序,不过这点与我们的直觉相反,基数排序首先对最低有效位数字进行排序。如果我们每次比较r bits,则需要进行b/r趟...原创 2019-05-08 11:39:34 · 438 阅读 · 0 评论 -
快速排序
如花美眷,似水流年,回得了过去,回不了当初。上图吧!下面只是一个模板:#include<iostream>#include<cstdio>#include<cmath>#include<cstring>#include<string>#include<map>#include<algorit...原创 2019-05-06 10:09:47 · 106 阅读 · 0 评论 -
manacher算法
上天折断了你飞翔的羽翼,你也要给自己一双翅膀!这个算法主要处理回文串。举个栗子:求字符串中最长回文串的长度(暴力pass掉的那种)abacbaa在其中插入一个符号(不能出现字符串中的,大家都懂的)#变成了#a#b#a#c#b#a#a#(#是从1开始的,前面新构造的数组0位置要存另一种符号)然后,构造一个p数组,p[i]表示一i为中间点的最长的回文串最右边字符到中间字符的长度...原创 2019-04-15 15:34:32 · 105 阅读 · 0 评论 -
KMP
上天折断了你飞翔的羽翼,你也要给自己一双翅膀!在说KMP算法前要讲一个前后缀的概念:前后缀: "前缀"指除了最后一个字符以外,一个字符串的全部头部组合;"后缀"指除了第一个字符以外,一个字符串的全部尾部组合 例如: - "A"的前缀和后缀都为空集,(单个字母的前缀为空) - "AB"的前缀为[A],后缀为[B], - "ABC"的前缀为[A, ...原创 2019-04-15 14:57:03 · 248 阅读 · 0 评论 -
最小生成树--prim算法
不恋尘世浮华,不写红尘纷扰,不叹世道苍凉,不惹情思哀怨,闲看花开,静待花落,冷暖自知,干净如始。首先了解图的几个概念:连通图:在无向图中,若任意两个顶点vi与vj都有路径相通,则称该无向图为连通图。 强连通图:在有向图中,若任意两个顶点vi与vj都有路径相通,则称该有向图为强连通图。 连通网:在连通图中,若图的边具有一定的意义,每一条边都对应着一个数,称为权;权代表着连接连个顶点的代价...原创 2019-05-19 17:39:03 · 274 阅读 · 0 评论 -
迪杰斯特拉算法
不恋尘世浮华,不写红尘纷扰,不叹世道苍凉,不惹情思哀怨,闲看花开,静待花落,冷暖自知,干净如始。dijkstra算法是一个求从源点到图上所有点最短路径的一种算法注意事项:如果权值为负的是不能用dijkstra算法的,因为假设存在一个回路,回路上的和小于0,则一直走这个回路,最短路径会变成无穷小。指定一个点(源点)到其余各个顶点的最短路径,也叫做“单源最短路径”。...原创 2019-05-19 18:56:00 · 1079 阅读 · 0 评论 -
弗洛伊德算法
不恋尘世浮华,不写红尘纷扰,不叹世道苍凉,不惹情思哀怨,闲看花开,静待花落,冷暖自知,干净如始。本文选自某一本书(具体是啥我其实也不知道,因为我是从一个文档中摘的原创 2019-05-19 19:48:51 · 445 阅读 · 0 评论 -
求某个范围内有最多约数的数的约数个数及这个数
苍茫大地一剑尽挽破,何处繁华笙歌落。斜倚云端千壶掩寂寞,纵使他人空笑我。把它当作模板吧,关于约数,素数数论中有许多有趣的结论和定理,推荐一本书--《快乐相遇数论》,目前,我正在看这本书,内容还是不错的。#include<iostream>#include<cstdio>#include<cstring>#include<cmath>...原创 2019-05-30 19:19:02 · 990 阅读 · 0 评论 -
最优约数及约数个数求解
苍茫大地一剑尽挽破,何处繁华笙歌落。斜倚云端千壶掩寂寞,纵使他人空笑我。下面是求某个数约数的个数比较优的算法了:#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<string>#include<algorithm&...原创 2019-05-30 18:47:12 · 238 阅读 · 0 评论 -
层层递进----广度优先搜索
不恋尘世浮华,不写红尘纷扰,不叹世道苍凉,不惹情思哀怨,闲看花开,静待花落,冷暖自知,干净如始。从谁开始就把谁存到队列里,从它开始进行以后的步骤,广搜的话会遇到许多分支一类的东西,每遇到一个分支就要push进队列里,每次处理判断时都要处理最前边的,即front(),处理的同时也要将其删掉pop(),方便可以一直处理front()的那个。在处理的过程中也要判断找寻是否是结果,进行判断。。。。进行...原创 2019-05-18 09:24:27 · 1146 阅读 · 1 评论 -
不撞南墙不回头----深度优先搜索
不恋尘世浮华,不写红尘纷扰,不叹世道苍凉,不惹情思哀怨,闲看花开,静待花落,冷暖自知,干净如始。搜索的要点:(1)初始状态;(2)重复产生新状态;(3)检查新状态是否为目标,是–结束,否–转(2);如果扩展是首先扩展新产生的状态,就叫深度优先搜索。深度优先搜索用一个数组存放产生的所有状态。(1) 把初始状态放入数组中,设为当前状态;(2) 扩展当前的状态,产生一个新的状态放入数组...原创 2019-05-17 17:48:34 · 787 阅读 · 1 评论 -
数论基础----逆元 (数论中的“倒数”)
苍茫大地一剑尽挽破,何处繁华笙歌落。斜倚云端千壶掩寂寞,纵使他人空笑我。逆元的概念,类似于倒数的性质。通过上面的引例我们可以粘贴到两个定义:单位元:存在一个集合中的元素【e】,使得给定任意一个集合中的元素a,均有a⊙e=e⊙a=a; 逆元:给定任意一个集合中的元素a,存在集合中的另一个元素b,使得a⊙b=b⊙a=e;那么接下来引入另一个概念啦:乘法逆元(在维基百科中也叫倒...原创 2019-05-27 13:15:00 · 5881 阅读 · 0 评论 -
数论基础----欧几里得算法和取余
苍茫大地一剑尽挽破,何处繁华笙歌落。斜倚云端千壶掩寂寞,纵使他人空笑我。1.欧几里得算法(辗转相除法)求最小公倍数。递归写法:int gcd(int a,int b){ if(b == 0) return a; else return gcd(b,a%b);}更简洁的写法:int gcd(int a,int b){ re...原创 2019-05-26 20:46:44 · 904 阅读 · 0 评论 -
算法----用不完的素数的各种求法
苍茫大地一剑尽挽破,何处繁华笙歌落。斜倚云端千壶掩寂寞,纵使他人空笑我。素数(Prime Number)定义:素数又称质数。一个大于1的自然数,除了1和它自身外,不能整除其他自然数的数叫做质数,举个栗子:2 ,3 ,5,7,……;那么剩下的就可以称为合数了。数学家认为素数是最重要的数,因为所有别的数都可以由若干个素数相乘而得,它是数学中的原子。比如8可以由2*2*2得到,15可以是由3...原创 2019-05-26 20:32:58 · 331 阅读 · 0 评论