网址  https://www.acwing.com/solution/AcWing/content/2069/ 题目描述给定一个长度为n的整数序列,请找出最长的不包含重复数字的连续子序列,输出它的长度. 算法1(枚举) O(n)O(n)滑动窗口 记录窗口的起始点 l r同时使用一个数组或者map记录该窗口区间各个数字出现的次数(后来证明使用map会超时)vector[HTML_REMOVED] v(N,0); 如果r增加的时候 添加的元素在区间已经有了 那么就从窗口起点开始逐个弹出 直到将重复…
点击查看代码 #include<iostream> using namespace std; const int N = 1e5 + 10; int a[N], s[N]; int main() { int n, res = 0; scanf("%d", &n); for (int i = 0; i < n; i ++) scanf("%d", &a[i]); for (int i = 0, j = 0; i < n; i +…
https://www.acwing.com/problem/content/801/ #include<bits/stdc++.h> using namespace std ; int n; ; int a[N],s[N]; //a数组用来记录数字,s数组用来记录每个数字出现过的次数 int main() { cin>>n; ; i<n; i++) cin>>a[i]; ; ,j=; i<n; i++) { s[a[i]]++; ) { s[a[j]]--…
最长公共子序列(不连续) 实际问题中也有比较多的应用,比如,论文查重这种,就是很实际的一个使用方面. 这个应该是最常见的一种了,不再赘述,直接按照转移方程来进行: 按最普通的方式就是,直接构造二维矩阵,两个序列分别是Ai 以及 Bj ,c[i,j]就表示的是第一个序列的从开始到第Ai个元素,以及第二个序列的从开始到第Bj个元素,这两部分序列的最长的公共子序列,如果ai==bj,则斜对角加1,否则就是前面和上面的元素中最大的那一个,就是按照这种方式,一层层的向下递推. 最长连续公共子序列 就是st…
题意: T个测试数据 n个数 q个查询 n个数 ( 下标从0开始) Q u v 查询 [u, v ] 区间最长连续上升子序列 U u v 把u位置改成v #include<iostream> #include<stdio.h> #include<string.h> #include<algorithm> using namespace std; #define N 101010 #define L(x) (x<<1) #define R(x) (…
Given a string, find the length of the longest substring without repeating characters. Examples: Given "abcabcbb", the answer is "abc", which the length is 3. Given "bbbbb", the answer is "b", with the length of 1.…
2018-11-25 16:28:09 问题描述: 问题求解: 方法一.如果不要求是线性时间的话,其实可以很直观的先排序在遍历一遍就可以得到答案,但是这里明确要求是O(n)的时间复杂度,那么就给了一个强烈的提示就是使用Hash来进行解决.方法一的思路很明确也很暴力,就是将所有的数字都保存到一个Hash表中,如果当前的数字是首个元素,那么就从他开始往后串连,得到以当前数字为首的最长连续序列,最后取max即可.时间复杂度是O(n),因为至多只会读取一个元素两次.…
给定一个顺序存储的线性表,请设计一个算法查找该线性表中最长的连续递增子序列.例如,(1,9,2,5,7,3,4,6,8,0)中最长的递增子序列为(3,4,6,8). 输入格式: 输入第1行给出正整数nn(≤105≤10​5​​):第2行给出nn个整数,其间以空格分隔. 输出格式: 在一行中输出第一次出现的最长连续递增子序列,数字之间用空格分隔,序列结尾不能有多余空格. 输入样例: 15 1 9 2 5 7 3 4 6 8 0 11 15 17 17 10 输出样例: 3 4 6 8 #inclu…
5065: 最长连续子序列   Time Limit(Common/Java):1000MS/3000MS     Memory Limit:65536KByteTotal Submit: 140            Accepted:29 Description 给定一系列非负整数,求最长的连续子序列,使其和是7的倍数. Input 第一行为正整数N(1<=N<=50000),接下来有N行,每行有一个非负整数,所有整数不大于10^6. Output 如果存在连续子序列,其和为7的倍数,则输…
题意:两种操作,Q L R查询L - R 的最长连续上升子序列长度,U pos val 单点修改值 #include <bits/stdc++.h> #define N 100005 using namespace std; ],pre[N<<],suf[N<<],arr[N];维护区间lcs长度,以左端点为起点的lcs长度,以右端点为终点的lcs长度,这么做是为了处理区间合并后区间总lcs值的更新 void pushup(int l,int r,int rt) { ;…