摘要: "生日礼物" 给出长度为n的序列$\{a_i\}$,请从中选出不超过m段,最大化每段的和的和,其中$1≤n,m≤10^5,|a_i|≤10^4$。 解 法一:递推 这是一道区间划分的问题,容易想到设一个方程$f[i][j]$表示前i数字,选出j段的最大的每段的和的和,容易有 $f[i][j]=\ma 阅读全文
posted @ 2019-07-28 09:43 a1b3c7d9 阅读(100) 评论(0) 推荐(0) 编辑
摘要: "匹配统计" 给出两个字符串$\{a_i\},\{b_i\}$,长度分别为$n,m$,有q个询问,每次询问长度恰好为x的a串中的位置数量,保证以该位置为开头的前缀与$\{b_i\}$匹配长度恰好为$x,1≤n,m,q,x≤200000$。 解 匹配问题,考虑kmp,不妨利用kmp,求出串a的f数组, 阅读全文
posted @ 2019-07-28 09:23 a1b3c7d9 阅读(192) 评论(0) 推荐(0) 编辑
摘要: "奶牛矩阵" 给出一个$R\times C$的字符矩阵,询问其最小的覆盖矩阵,定义一个覆盖矩阵为其不断的自我复制扩张以后原字符矩阵为其子矩阵,$1≤R≤10000,1≤C≤75$。 解 从简单开始研究,刚开始不要研究二维,对于一行而言,我们发现一个结论,也就是它的覆盖矩阵,必然可以对齐左端,画张图自 阅读全文
posted @ 2019-07-28 08:48 a1b3c7d9 阅读(186) 评论(0) 推荐(0) 编辑
摘要: "内存分配" 内存是计算机重要的资源之一,程序运行的过程中必须对内存进行分配。 经典的内存分配过程是这样进行的: 1、 内存以内存单元为基本单位,每个内存单元用一个固定的整数作为标识,称为地址。地址从0开始连续排列,地址相邻的内存单元被认为是逻辑上连续的。我们把从地址i开始的s个连续的内存单元称为首 阅读全文
posted @ 2019-07-28 08:35 a1b3c7d9 阅读(380) 评论(0) 推荐(0) 编辑
摘要: "括号画家" 求一段由括号组成序列中最长的合法的括号序列,$len\leq 10^5$。 解 显然想到栈,于是从左往右扫描,从答案的角度看,合法括号序列部分必然是互不交叉的且连续的,而且内部也是合法的,那么其他部分都是不合法的,我们只要能设法找到这些部分。 如果从左往右扫描到了多余的右括号,则说明后 阅读全文
posted @ 2019-07-28 07:36 a1b3c7d9 阅读(175) 评论(0) 推荐(0) 编辑