1、STL概述 为了建立数据结构和算法的一套标准,并且降低他们之间的耦合关系,以提升各自的独立性、弹性、交互操作性(相互合作性,interoperability),诞生了STL。 STL提供了六大组件,彼此之间可以组合套用,这六大组件分别是:容器、算法、迭代器、仿函数、适配器(配接器)、空间配置器。 ...
分类:
其他好文 时间:
2020-06-20 17:06:14
阅读次数:
63
【最长公共子序列问题】 问题定义: 输入:X = (x1,x2,...,xm) , Y = (y1,y2,...yn) 输出:公共子序列长度(拓展:如何打印公共子序列) 1. 如何用子问题表示 dp[ i ][ j ]表示X的i前缀与Y的j前缀的最长公共子序列长度 则总问题==dp[ m ][ n ...
分类:
其他好文 时间:
2020-06-20 16:01:12
阅读次数:
52
问题定义: 设计高效算法,求给定输入字符串的最长回文子序列。例如,给定输入character,算法应该返回carac。算法的运行时间是怎样的? 可以将问题中的回文看作前后缀匹配的问题,因此这个问题属于特殊的前缀动态规划的问题 1. 如何用子问题表示 dp[ i ][ j ]表示A[ i…j ]的最长 ...
分类:
其他好文 时间:
2020-06-20 13:47:23
阅读次数:
44
经典DP问题之最长上升子序列和最长公共子序列 在DP问题中,最长上升子序列(LIS)和最长公共子序列(LCS)无疑是最经典的入门题目,充分体现了DP的思想。 最长上升子序列(LIS) 题目描述 给定一个长度为N的数列,求数值严格单调递增的子序列的长度最长是多少。 示例 input: 7 3 1 2 ...
分类:
其他好文 时间:
2020-06-20 01:00:21
阅读次数:
48
题意:有一组数,每次操作可以将某个数移到头部或者尾部,问最少操作多少次使得这组数非递减. 题解:先离散化将每个数映射为排序后所对应的位置,然后贪心,求最长连续子序列的长度,那么最少的操作次数一定为$n-len$. 感觉不好解释,直接上图,其实就是排序后它们一定是连续的,所以我们就求一个最长的连续的, ...
分类:
其他好文 时间:
2020-06-19 13:37:17
阅读次数:
39
动态规划思想 注意:子串和子序列的区别 子串一定时连续的,子序列不一定是连续的 首先清楚dp数组的含义 定义:dp[i]表示以nums[i]这个数结尾的最长递增子序列的长度 因为nums[3]=4,最长递增子序列为1,3,4,所以长度为3即dp[3]=3 既然是递增子序列,只要找到前面那些结尾比4小 ...
分类:
其他好文 时间:
2020-06-17 23:36:35
阅读次数:
57
一、归并排序 归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为2-路归并。 所谓“分”,指的是将一个 ...
分类:
编程语言 时间:
2020-06-17 01:03:57
阅读次数:
82
CF Round 648 (Div.2)/CF1365 这次手慢了一点AC前3题只有+20。或者说一个重要原因是第一题看错了题 WA 了两发。 A. XXXXX 这题我和许多人一样把 Subarray 看成了 Subsequence,于是惨遭两发 WA。它要求求出连续子序列。我们分类讨论。答案是 - ...
分类:
其他好文 时间:
2020-06-15 17:51:54
阅读次数:
55
A:http://codeforces.com/contest/1364/problem/A 题意: n个数的序列,给出x 找出最长的子序列(删除首尾得到的序列),使得和不能被x整除。 解析: 如果总的sum%x!=0,直接输出n 整除段-不能整除段=不能整除段 找到离左端点最近的不能整除x的下标L ...
分类:
其他好文 时间:
2020-06-14 23:47:14
阅读次数:
68
题目链接:https://codeforces.com/contest/1364/problem/B 题意 给出大小为 $n$ 的一个排列 $p$,找出子序列 $s$,使得 $|s_1-s_2|+|s_2-s_3|+\ldots+|s_{k-1}-s_k|$ 最大的同时 $k$ 尽可能地小。 题解 ...
分类:
其他好文 时间:
2020-06-14 18:48:20
阅读次数:
95