Description 现在有一列楼,共 \(n\) 个,从前面看是 \(f\) 个,从后面看有 \(b\) 个,楼的高度是一个排列 这里能看见得满足上升子序列 求有多少种的排列满足条件 \(n,f,b\le 2000\) Solution 一定能看到最高的那个楼,所以该正反的序列就都以高度为 \( ...
分类:
其他好文 时间:
2020-07-27 23:42:07
阅读次数:
62
392. 判断子序列 给定字符串 s 和 t ,判断 s 是否为 t 的子序列。 你可以认为 s 和 t 中仅包含英文小写字母。字符串 t 可能会很长(长度 ~= 500,000),而 s 是个短字符串(长度 <=100)。 字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符 ...
分类:
其他好文 时间:
2020-07-27 14:00:48
阅读次数:
68
题目描述: 给定字符串 s 和 t ,判断 s 是否为 t 的子序列。 你可以认为 s 和 t 中仅包含英文小写字母。字符串 t 可能会很长(长度 ~= 500,000),而 s 是个短字符串(长度 ?100)。 字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成 ...
分类:
其他好文 时间:
2020-07-27 13:58:41
阅读次数:
73
##LIS(最长上升子序列)(含等于的是最长不上升子序列) 首先介绍下(O(n^2))的dp 首先单独一个数我们直接把他看成就是一个子序列,这个子序列的LIS就是1.我们用一个DP[i]记录从之前到i的LIS,不难得到状态转移方程dp[i]=max(dp[i],dp[j]+1) ( j=[1,i-1 ...
分类:
其他好文 时间:
2020-07-26 19:20:53
阅读次数:
91
1.实现方式 首先我们需要一个数组a,存储从第1个到第n个导弹的高度 然后一个数组d(其实是个栈),存储不上升序列 把a中的每个元素挨个加到d里面: (a中第i个元素为a[i],d长度为len,d中最后一个(也是最小的一个)为d[len]) 如果a[i] <= d[len],说明a[i]可以接在d后 ...
分类:
其他好文 时间:
2020-07-26 15:56:51
阅读次数:
70
很清新的DS题,话说我好久没写过DS了…… 首先我们考虑把一对路灯$x,y$间的答案看做点对$(x,y)$,那么显然有一个性质,若$l,r$联通,则$u,v(l\le u<v\le r)$也联通 换句话说就是$(x,y)\(为**最长的连续的1子序列**的两个端点,那么每次它会对矩形\)(x,x), ...
DNA sequence HDU - 1560 题意: 给定N个DNA序列(仅由ATCG构成),求能使得这N个序列均为其子序列的最短公共序列,输出这个最小的长度。 思路: IDA*,估价函数即N个序列中未匹配个数的最大值。(因为最理想情况是,当前所尝试的字母X加入公共序列之后,能同时与这N个序列匹配 ...
分类:
其他好文 时间:
2020-07-25 23:40:46
阅读次数:
67
不难发现答案即为a[l, r]的长度加上b的长度减去2倍的a[l,r]与b的LCS。 那么难点就在于如何处理出每次询问的lcs了,这里仍然采用dp的思想。对于dp[i][j]代表b串前i个字符串与a[l,r]形成了长度为j的公共子序列时在a串中的最小下标位置。 那么不难得出转移方程1 :dp[i][ ...
分类:
其他好文 时间:
2020-07-25 11:28:59
阅读次数:
75
在leetcode上遇到的题: 给定一个整数数组 A ,考虑 A 的所有非空子序列。对于任意序列 S ,设 S 的宽度是 S 的最大元素和最小元素的差。返回 A 的所有子序列的宽度之和。 例子: 输入:[2,1,3] 输出:6 解释: 子序列为 [1],[2],[3],[2,1],[2,3],[1, ...
分类:
编程语言 时间:
2020-07-25 09:17:58
阅读次数:
77
dp连续子数组的最大问题求解: ##思路: ####1.dp[i] 表示以第i个元素为末尾元素的子序列最大和 ####2.只有一个元素时,该元素即最大 ####3.当dp[i-1]为负数时,对第i个元素产生负影响;为正数时,比较加上第i个元素值是否变大,dp[i] 为nums[i]与dp[i-1]+ ...
分类:
编程语言 时间:
2020-07-24 21:45:11
阅读次数:
64