摘要:
为什么要开始记录刷题笔记呢? 因为发现自己经常在做完很多题目之后并没有总结和反思,所以才会忘得很快,所以从现在开始把所有值得记录的东西,经过自己思考的东西都记录下来,写成博客。 题目: 给定 K 个整数组成的序列{ N 1, N 2, ..., N K },“连续子列”被定义为{ N i , N i 阅读全文
摘要:
算法中常见的数学问题 在计算机世界里,我们通常还是要解决一些数学问题,这里对一些常见数学问题的算法进行总结,希望能够减慢遗忘的速度。 [TOC] 最大公约数和最小公倍数 最大公约数 正整数 a 与 b 的最大公约数是指 a 与 b 的所有公约数中最大的那个公约数,一般用 来表示 a 和 b 的最大公 阅读全文
摘要:
并查集 [TOC] 定义 并查集是一种维护集合的数据结构,并: ,查: ,集: 。 并查集支持下面两种操作: 1. 合并:合并两个集合 2. 查找:判断两个元素是否在一个集合 并查集使用一个数组实现 其中 father[i] 代表元素 i 的父亲节点,而父亲节点本身也是这个集合内的元素。 如果 说明 阅读全文
摘要:
堆 [TOC] 堆是一棵完全二叉树,每个节点的值都不小于(不大于)其左右孩子结点的值。 如果父亲结点的值大于等于孩子结点的值,那么称这样的堆为大顶堆,这时每个节点的值都是以它为根结点的子树的最大值;反之为小顶堆。 堆的实现 由于堆是一棵完全二叉树,所以我们可以用数组来实现一棵完全二叉树,也就能实现堆 阅读全文
摘要:
哈夫曼树 Huffman Tree [TOC] 定义 在一个果园里,小明已经将所有的水果打了下来,并按水果的不同种类分成了若干堆,小明决定把所有的水果合成一堆。 每一次合并,小明可以把两堆水果合并到一起,消耗的体力等于两堆水果的重量之和。 当然经过 n‐1 次合并之后,就变成一堆了。小明在合并水果时 阅读全文
摘要:
背包问题 多阶段动态规划问题 有一类动态规划可解的问题,它可以描述称为若干有序的阶段,且每个阶段的状态只和上一个阶段的状态有关,一般把这类问题称为多阶段规划问题。 01 背包问题 01背包问题描述如下: 有 n 件物品,每件物品的重量为 w[i],价值为 c[i]。现有一个容量为 V 的背包,问如何 阅读全文
摘要:
最长回文子串 最长回文子串的问题描述: 给出一个字符串 S,求 S 的最长回文子串的长度 例子: 字符串 "PATZJUJZTACCBCC" 的最长回文子串为 "ATZJUJZTA",长度为 9 还是先看暴力解法,枚举子串的两个端点 i 和 j,需要判断在 内的子串是否回文,从复杂度上看,枚举端点需 阅读全文
摘要:
最长公共子序列 最长公共子序列(Longest Common SubSequence)的问题描述为: 给定两个字符串A和B,求一个字符串,使得这个字符串是 A 和 B 的最长公共部分 例如:"sadstory" 和 "adminsorry" 的最长公共子序列为 "adsory",长度为 6 如果是暴 阅读全文
摘要:
最长不下降子序列(LIS) 最长不下降子序列(Longest Increasing Subsequence)是动态规划中的一个非常经典的问题: 在一个数字序列中,找到一个最长的子序列(可以不连续),使得这个子序列是不下降(非递减)的 例如 ,它的最长不下降子序列是 ,长度为 5。 对于这个问题,最简 阅读全文
摘要:
在网安实验室暑期实习中,兴趣使然对网络安全方面进行了学习,在此记录下网络渗透中的一般步骤和常用工具,这只是一篇总结。 网络渗透过程 网络渗透主要分为三个阶段,准备阶段、实施阶段和善后阶段,这三个阶段都不可少,都是必备的部分,故不可忽视任何一个部分。 渗透环境: Kali Linux (十星推荐使用, 阅读全文