10 2019 档案
摘要:描述 【题解】 尺取法 对于[l..r]这段 如果新加进来的s[r]有和之前的重复。 那么就不用重新开始了。 直接递增左区间。 让这段没有重复数字了再说。 然后再把s[r]加进去。 【代码】 cpp class Solution { public: int lengthOfLongestSubstr
阅读全文
摘要:描述 【题解】 用个map的话就是O(N)级别的了。 【代码】 cpp class Solution { public: unordered_map mymap; vector twoSum(vector& nums, int target) { int len = nums.size(); vec
阅读全文
摘要:描述 【题解】 模拟高精度的加法。 用x来记录前面的进位就好。 【代码】
阅读全文
摘要:´问题描述: 给定一个由 n 行数字组成的数字三角形如下图所示。试设计一个算法,计算出从三角形 的顶至底的一条路径,使该路径经过的数字总和最大。 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 ´编程任务: 对于给定的由 n 行数字组成的数字三角形,编程计算从三角形的顶至底的路径经过的数
阅读全文
摘要:´问题描述: 在一个圆形操场的四周摆放着 n 堆石子。现要将石子有次序地合并成一堆。规定每次只 能选相邻的 2 堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的得分。试设计一 个算法,计算出将 n 堆石子合并成一堆的最小得分和最大得分。 ´编程任务: 对于给定 n 堆石子,编程计算合并成一堆的
阅读全文
摘要:问题描述: 在一台超级计算机上,编号为1,2, , n 的 n 个作业等待批处理。批处理的任务就是将 这 n 个作业分成若干批,每批包含相邻的若干作业。从时刻 0 开始,分批加工这些作业。在 每批作业开始前,机器需要启动时间 S ,而完成这批作业所需的时间是单独完成批中各个作 业需要时间的总和
阅读全文
摘要:´问题描述: 用 2 台处理机 A 和 B 处理 n 个作业。设第 i 个作业交给机器 A 处理时需要时间 i a ,若 由机器 B 来处理,则需要时间 i b 。由于各作业的特点和机器的性能关系,很可能对于某些 i, 有 i i a ³ b ,而对于某些 j,j≠i,有a j 【题解】 设f[i]
阅读全文
摘要:描述 【题解】 设f[i][j]表示前i个数字分成了j段的最大子段和。 则f[i][j] = max(f[i 1][j]+a[i] (第i个数字和第j段合在一起),f[k][j 1]+a[i] (第i个数字作为第j段的第一个数字,同时在j 1段的情况中找到和最大的那个)) 这样的时间复杂度是$O(m
阅读全文
摘要:问题描述: 设 n 是一个正整数。2´n 的标准 2 维表是由正整数 1,2,…,2n 组成的 2´n 数组,该 数组的每行从左到右递增,每列从上到下递增。2´n 的标准 2 维表全体记为 Tab(n)。例如, 当 n=3 时 Tab(3)如下: 1 2 3 1 2 4 1 2 5 1 3 4 1
阅读全文
摘要:´问题描述: n 个元素的集合{1,2,, n }可以划分为若干个非空子集。例如,当 n=4 时,集合{1,2, 3,4}可以划分为 15 个不同的非空子集如下: {{1},{2},{3},{4}}, {{1,2},{3},{4}}, {{1,3},{2},{4}}, {{1,4},{2},{3}
阅读全文
摘要:问题描述: n 个元素的集合{1,2,, n }可以划分为若干个非空子集。例如,当 n=4 时,集合{1,2, 3,4}可以划分为 15 个不同的非空子集如下: {{1},{2},{3},{4}}, {{1,2},{3},{4}}, {{1,3},{2},{4}}, {{1,4},{2},{3}}
阅读全文
摘要:问题描述: n 个元素{1,2,, n }有 n!个不同的排列。将这 n!个排列按字典序排列,并编号为 0,1,…, n! 1。每个排列的编号为其字典序值。例如,当 n=3 时,6 个不同排列的字典序值如下: 字典序值 0 1 2 3 4 5 排列 123 132 213 231 312 321
阅读全文
摘要:´问题描述: 设 R={ n r ,r , ,r 1 2 }是要进行排列的 n 个元素。其中元素 n r ,r , ,r 1 2 可能相同。试设计 一个算法,列出 R 的所有不同排列。 ´编程任务: 给定 n 以及待排列的 n 个元素。计算出这 n 个元素的所有不同排列。 ´数据输入: 由文
阅读全文
摘要:´问题描述: 给定一个自然数 n,由 n 开始可以依次产生半数集 set(n)中的数如下。 (1) n∈set(n); (2) 在 n 的左边加上一个自然数,但该自然数不能超过最近添加的数的一半; (3) 按此规则进行处理,直到不能再添加自然数为止。 例如,set(6)={6,16,26,126,3
阅读全文
摘要:´问题描述: 给定一个自然数 n,由 n 开始可以依次产生半数集 set(n)中的数如下。 (1) n∈set(n); (2) 在 n 的左边加上一个自然数,但该自然数不能超过最近添加的数的一半; (3) 按此规则进行处理,直到不能再添加自然数为止。 例如,set(6)={6,16,26,126,3
阅读全文
摘要:描述 【题解】 unordered_map跟直接用数组差不多。 【代码】
阅读全文
摘要:描述 【题解】 用矩阵乘法加速递推 [0 1] [1 1] [f[n 1]] [f[n 2]] = [f[n 1]] [f[n]] 求A矩阵的n 2次幂然后再乘B矩阵。 结果矩阵中的第二行第一列就是f[n]的结果了 【代码】 cpp include include define ll long lo
阅读全文
摘要:一颗二叉树,其左右子树都空,或都不空,则为“严格二叉树”,用先序遍历 和后序遍历能确定一颗严格二叉树,二叉树的前序序列为 ABDECFHIGJLKMN,后序序列为 DEBHIFLJMNKGCA. 然后输出其中序遍历 【题解】 主要就是根据这个二叉树的特点写个递归就好。 因为如果有左子树一定有右子树。
阅读全文
摘要:给你二维平面上的n个点,让你求出其中最近的点对。 【题解】 这是一个分治的问题。 可以这样做: 首先将n个点按照x升序排。 然后将l..r这个区间内的点分成 l..mid和mid+1..r两个部分递归求解。 分别求出这两段里面的点的最近点对的距离d1和d2 然后令d = min(d1,d2) 这是最
阅读全文
摘要:描述 【题解】 把第一个数字作为基准,然后把[l+1,r]进行划分. 找到最大的j,使得a[j]之后就能用Type代替任意类型了(传进来什么都可以) 【代码】 cpp include include using namespace std; const int N = 1e5; int n; int
阅读全文
摘要:描述 【题解】 让区间的长度L为1,2,4,...2^(n 1) 然后对每个位置i开始的长度为L的区间归并有序,用归并排序的方法就好,然后i跳转到i+L 复杂度仍然是log2(n) n级别的,注意写的时候的一些细节。 比如一定要让最后L =n的情况进行过一次,不然无法保证整个序列是有序的 【代码】
阅读全文
摘要:描述 【题解】 之前写过一次详解:https://www.cnblogs.com/AWCXV/p/11395875.html 【代码】
阅读全文
摘要:3 = 1 + 1 +1 3 = 2 + 1 3 = 3 则q(n,m)表示n的划分中最大值不超过m的方案书,q(3,3)=3. 【题解】 q(n,m)=q(n m,m)+q(n,m 1);//放一个m在开头+不放m在开头然后尝试f(n,m)=0 ② ①在②前。 【代码】 cpp include d
阅读全文
摘要:输入n个数字,输出它的所有排列 【题解】 总体的思路就是先产生一个数字的排列 ① 从后面n 1个数字中挑一个数字到第一个位置上替换它(n 1)个方案. ②生成后面n 1数字的排列。 一直重复这个两个步骤就可以了 (感觉是比之前那种flag[]数组法好用的方法) 【代码】
阅读全文
摘要:´问题描述: 最大间隙问题:给定 n 个实数 n x , x , , x 1 2 ,求这 n 个数在实轴上相邻 2 个数之间的最 大差值。假设对任何实数的下取整函数耗时O(1) ,设计解最大间隙问题的线性时间算法。 ´编程任务: 对于给定的 n 个实数 n x , x , , x 1 2 ,
阅读全文
摘要:问题描述: 有m ´ n(m £ 100,n £ 100) 个金币在桌面上排成一个m 行 n 列的金币阵列。每一枚金 币或正面朝上或背面朝上。用数字表示金币状态,0 表示金币正面朝上,1 表示背面朝上。 金币阵列游戏的规则是: (1)每次可将任一行金币翻过来放在原来的位置上; (2)每次可任选 2
阅读全文
摘要:´问题描述: 在数据加密和数据压缩中常需要对特殊的字符串进行编码。给定的字母表 A 由 26 个小 写英文字母组成 A={a,b,…,z}。该字母表产生的升序字符串是指字符串中字母按照从左到 右出现的次序与字母在字母表中出现的次序相同,且每个字符最多出现 1 次。例如, a,b,ab,bc,xyz
阅读全文
摘要:´问题描述: 一本书的页码从自然数 1 开始顺序编码直到自然数 n。书的页码按照通常的习惯编排, 每个页码都不含多余的前导数字 0。例如,第 6 页用数字 6 表示,而不是 06 或 006 等。数 字计数问题要求对给定书的总页码 n,计算出书的全部页码中分别用到多少次数字 0,1, 2,…,9。
阅读全文