算法方向分析 对于这题 \(\le 1000000\) 的数据规模显然只允许我们用一重循环。 最长,可见这是道最值问题。 最值问题可以用贪心,DP,二分…… 这道题我们用 DP 来做。 构建状态 首先,我们需要构建状态,状态的构建不是唯一的,受最长上升子序列的影响,我是这样构建的:令 \(f_i\) ...
分类:
其他好文 时间:
2021-07-19 16:39:33
阅读次数:
0
分析 令 \(dp_i\) 表示数列到目前为止最后一项第 \(i\) 位为 \(1\) 的最大子序列长度,每读入一个数时就大力转移。一个数可以被它所有的二进制位的 \(dp\) 值转移,然后把它转移到它的所有二进制位的 \(dp\) 值上。 复杂度 \(O(n\log_2n)\)。 代码 #incl ...
分类:
其他好文 时间:
2021-07-19 16:38:33
阅读次数:
0
二分 求一个序列的最长上升子序列个数。 本程序采用边读边处理 + 二分法。 ll f[maxn], ans = 1; //注意答案个数初始化为1 int main() { ll n = read(); for (int i = 1; i <= n; ++i) { int x = read(); if ...
分类:
其他好文 时间:
2021-06-29 15:59:12
阅读次数:
0
题目: 给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。 子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。 思路: 动态规划: 新建 nums.length 长度的数组 两次 ...
分类:
其他好文 时间:
2021-06-28 20:16:42
阅读次数:
0
常见算法 算法与数据结构是面试考察的重中之重,也是日后刷题时需要着重训练的部分。 简单的总结一下,大约有这些内容: 算法 - Algorithms 1、排序算法:快速排序、归并排序、计数排序2、搜索算法:回溯、递归、剪枝技巧3、图论:最短路、最小生成树、网络流建模4、动态规划:背包问题、最长子序列、 ...
分类:
编程语言 时间:
2021-06-22 18:19:06
阅读次数:
0
难度 medium 给定一个整数数组 A,返回 A 中最长等差子序列的长度。 回想一下,A 的子序列是列表 A[i_1], A[i_2], ..., A[i_k] 其中 0 ? i_1 < i_2 < ... < i_k ? A.length - 1。并且如果 B[i+1] - B[i]( 0 ? ...
分类:
其他好文 时间:
2021-06-19 19:04:35
阅读次数:
0
实验报告 课程名称 学生姓名 实验名称 实验地点 1. LCS问题: 给定两个字符串,求两个字符串的最长公共子序列 背包问题: 此处应指01背包问题 给定n个物品,每个物品具有价值和重量两个属性。 求在限定的重量V的背包中装入尽可能多的物品以达到最大的价值 2. 这两个问题都是动态规划中的经典问题 ...
分类:
编程语言 时间:
2021-06-18 18:59:30
阅读次数:
0
子序列自动机 (Subsequence Automaton) 时隔两个月回来学自动机. 子序列自动机可以在线性时间识别一个字符串 \(a\) 是否是 \(s\) 的子序列. 首先考虑 \(s\) 没有重复字符的情况, 那么 \(s\) 的子序列就是 \(2^{Len_s}\) 种, 分别是每个字符选 ...
分类:
其他好文 时间:
2021-06-16 17:45:38
阅读次数:
0
代码源自该视频 算法思想:选择一个中心点,将比中心点小的移动到左边,反之移动到右边; 这时形成两个子序列,对子序列递归直至,每个序列只有一个元素为止 时间复杂度 最好的情况是O(nlogn) 最差的情况是O(n²) 特点 如果基本有序 则会变成冒泡排序,时间复杂度为O(n²) package wha ...
分类:
编程语言 时间:
2021-06-11 18:23:48
阅读次数:
0
原题链接 考察:线性dp or 枚举 大佬的思路: 0不能出现在1的右边,所以是单调非下降子序列,求最长即可. 本菜狗的思路: 枚举每一个1的位置,求保留前面所有0和后面所有1的长度,取最长即可. ##Code #include <iostream> #include <cstring> #incl ...
分类:
其他好文 时间:
2021-06-10 18:23:30
阅读次数:
0