算法
一些基础的算法,参考自算法导论
Gaoithe
程序与人生
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
NP 完全性理论 - 算法学习前的引论 or 算法学习后的展望
本文参考自:https://blog.youkuaiyun.com/liusiqian0209/article/details/49837447这就是一个对问题解决算法的根本性质进行讨论的理论,主要探讨所有问题是否都存在能够在多项式时间内解决的算法。一、基本概念:1. P 问题:利用多项式时间能解决的问题。2.NP 问题:利用多项式时间能够验证问题的一个解是否正确的问题。3. 归约:将某一问题要求的结果进行一定逻辑上的转换,对问题进行一般性质的归纳。 若归约后的...原创 2020-06-10 13:14:45 · 528 阅读 · 0 评论 -
树形DP(树形动态规划)算法 + 例题(树的重心,树上最远距离...)
一、 简介:树形DP就是在树的数据结构上计算DP值。树形DP有两个方向:叶->根、根->叶。树形DP通过记忆化搜索实现,因此采用递归实现。时间复杂度一般为O(n),若有维数m,则为O(n*m)。二、 经典问题:1. 树的重心:http://poj.org/problem?id=1655 叶->根所谓重心就是各分支大小围绕该点能较均匀的分...原创 2019-08-22 16:29:02 · 1554 阅读 · 0 评论 -
分块算法-例题
一、算法介绍:首先,分块是一种线性的暴力数据结构。 其基本思想是将一段序列,分成一定数量的块,每一块有一个长度,表示一段区间。对于区间操作,通过对完整块的整体操作和对不完整块的暴力操作而使复杂度尽可能的低。当块的大小设为 sqrt(n)时间复杂度最低。 数据量在1e5之内,时间复杂度为o(n*√n)时算法可在1s内通过,时间复杂度为o(n*√n*log(n))时算法可在2s内通过。 ...原创 2019-08-16 13:57:44 · 1321 阅读 · 0 评论 -
博弈论SG函数-算法介绍及例题
一、 基本概念:1. Impartial Combinatorial Games(ICG) 公平组合游戏: 1. 两名选手 2. 交替进行某种游戏规定的操作,每操作一次,选手可以在有限的操作(操作必须合法)集合中任选一种。 3. 对于游戏的任何一种可能的局面,合法操作集合只取决于这个局面本身,不取决于其它因素(跟选手,以前的所有操作无关) 4. 如果...原创 2019-08-24 14:21:34 · 2297 阅读 · 0 评论 -
Fibonacci进阶问题 && 矩阵连乘P1
一、 斐波那契相关公式介绍: 第一个是斐波那契数列的定义式,第二个是解不定方程得到的公式(离散上讲过),第三个是斐波那契的矩阵求解公式(参照:https://blog.youkuaiyun.com/lanchunhui/article/details/50569311)。二、 问题实战:1.Fibonacci Again:http://acm.ne...原创 2019-07-14 23:11:23 · 416 阅读 · 0 评论 -
字符串哈希(Hash)
所谓字符串哈希就是构造一个数字使之唯一代表一个字符串。构造方法:假如给你一个数字1166,形式上你只知道它只是1和6的组合,但你知道它代表的实际大小1*10^3+1*10^2+6*10^1+6*10^0。同理,给你一个字符串,要把它转换为数字,就可以先把每一个字符都先对应一个数字,然后把它们按照顺序乘以进制的幂进行相加。如abcd,我们取各个字母的ASCII码值减去a的ASCI...原创 2019-06-24 21:04:06 · 8897 阅读 · 1 评论 -
单源最短路径问题-迪杰斯特拉算法(Dijsktra)
一、问题描述:给定一个带权有向图G=(V,E) ,其中每条边的权是一个非负实数。再给定 V 中的一个顶点,称为源,计算源到所有顶点的最短距离。实例:单源最短路径(弱化版)https://www.luogu.org/problemnew/show/P3371二、 求取过程:1. 从起点开始,查找所有与起点直接相连的点,并把连接它们的边权值作为起点到它们的距离(有平行边取最...原创 2019-06-16 22:47:20 · 15035 阅读 · 5 评论 -
并查集-算法详解及例题(最小生成树问题)
一、并查集的概念:并查集(Union-find Sets)是一种非常精巧而实用的数据结构,它主要用于处理一些不相交集合的合并问题。一些常见的用途有求连通子图、求最小生成树的 Kruskal 算法和求最近公共祖先(Least Common Ancestors, LCA)等。使用并查集时,首先会存在一组不相交的动态集合 S={S1,S2,⋯,Sk}S={S1,S2,⋯,Sk},一般都会使用一...原创 2019-06-01 10:10:32 · 1113 阅读 · 0 评论 -
单调队列-原理详解(deque实现)
一、单调队列的概念:单调队列,即单调递减或单调递增的队列。二、单调队列的性质:1. 队列中的元素在原来的列表中的位置是由前往后的(随着循环顺序入队)。2. 队列中元素的大小是单调递增或递减的。三、单调队列的特点:从队尾入列,队首或队尾出列。四、例题分析:那么单调队列用什么用呢?单调队列一般用于求区间内的最值问题。看几道题,理解上述内容:1. 洛谷P1886 ...原创 2019-05-30 14:50:07 · 18336 阅读 · 4 评论 -
KMP算法-next数组生成、匹配过程及时间复杂度简析
能看到这篇博客的人估计被KMP折磨的够呛了,我就不啰嗦概念什么的了。需要的话可以看这篇博客https://blog.youkuaiyun.com/f1033774377/article/details/82556438,看到F数组生成之前即可,目的是理解清楚匹配过程。其实仅凭想象的话KMP匹配过程很好理解,但难点就是对于代码上next数组生成实际匹配的过程的理解。一、首先要明白next数组的作用:...原创 2019-05-24 22:59:19 · 3441 阅读 · 0 评论 -
DFS-深度优先搜索(深搜)
先摘一段官话:深度优先搜索(Depth First Search)是搜索的手段之一。它是从某个状态开始,不断的转移状态直到无法转移,然后退回到前一步的状态,继续转移到其他的状态,如此不断的重复,直至找到最终的解。其大致的过程如下:(1)访问搜索到的未被访问的邻接点;(2)将此顶点标记为已访问节点;(3)搜索该顶点的未被访问的邻接点,若该邻接点存在,则从此邻接点开始进行同样的访问和...原创 2019-05-04 21:38:15 · 1859 阅读 · 0 评论 -
尺取-算法详解及例题
1. 先看一道例题:http://acm.nefu.edu.cn/JudgeOnline/problemShow.php?problem_id=1814题目的意思是给你一个n和s,然后给出n个数,求这n个数中和大于等于s的最小连续序列。看一下第一组数据:10 155 1 3 5 10 7 4 9 2 8首先在不考虑时间的情况下可以这么干: for(l=1;l<...原创 2019-05-03 22:33:50 · 2004 阅读 · 3 评论 -
背包问题扩展-多重背包、完全背包、混合背包
本篇文章以https://blog.youkuaiyun.com/sinat_40471574/article/details/89740300为基础,在阅读本篇文章之前,最好先看一下。上一篇文章介绍了01背包问题,接下来我将介绍01背包的扩展问题:多重背包、完全背包以及混合背包。1. 多重背包:http://acm.nefu.edu.cn/JudgeOnline/problemShow.php?pr...原创 2019-05-02 10:35:10 · 1652 阅读 · 0 评论 -
背包问题基础-01背包
在看这篇文章之前,最好要有一定的DP基础:题目链接:http://acm.nefu.edu.cn/JudgeOnline/problemShow.php?problem_id=1712简单来说就是你有一个承重量为m的背包,然后给你n个物品的重量和价值,求背包中能装物品的最大价值。此类问题,有一套固定的模板,如题解报告中所给出的。接下来,我将此题的题解报告为例,分析问题思路。1. ...原创 2019-05-02 00:34:57 · 1050 阅读 · 0 评论
分享