AcWing 1016. 最大上升子序列和】的更多相关文章

#include<iostream> using namespace std ; ; int f[N]; int a[N]; int main() { int n; cin>>n; ; ; i<=n; i++) cin>>a[i]; ; i<=n; i++) { f[i]=a[i]; ; j<i; j++) { if(a[i]>a[j]) f[i]=max(f[i],f[j]+a[i]); } res=max(res,f[i]); } cout&…
网址  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 ; ; int n; int a[N]; int b[N]; int f[N][N]; //f[i][j] //表示所有由第一个序列的前i个字母,和第二个序列的前j个字母构成的, //且以b[j]结尾的公共上升子序列 int main() { scanf("%d",&n); ; i<=n; i++) scanf("%d",&a[i]); ; i<=n…
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]]--…
#include<iostream> #include<algorithm> #include<vector> using namespace std; int main(void) { int n; cin >> n; vector<int>arr(n); ; i < n; ++i) cin >> arr[i]; vector<int>stk;//模拟堆栈 stk.push_back(arr[]); ; i <…
//设上升序列的最后一个数字为第i个,那么就以第i-1个位分类标准, //i-1可以没有,也可以是在数组中下标为1,下标为2 //一直到下标为i-1的数字 #include <iostream> #include <algorithm> using namespace std; ; int n; int a[N], f[N]; int main() { scanf("%d", &n); ; i <= n; i ++ ) scanf("%d…
#include <iostream> #include <algorithm> using namespace std; ; int n, m; char a[N], b[N]; int f[N][N]; int main() { scanf("%d%d", &n, &m); scanf(, b + ); ; i <= n; i ++ ) ; j <= m; j ++ ) { f[i][j] = max(f[i - ][j], f[…
点击查看代码 #include<iostream> using namespace std; const int N = 1e5 + 10; int a[N], b[N]; int main() { int n, m; scanf("%d %d", &n, &m); for (int i = 0; i < n; i ++) scanf("%d", &a[i]); for (int i = 0; i < m; i ++)…
点击查看代码 #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/316/ 题意:求一个最长单调递减子序列,然后并且求方案数,如果序列完全一样就不要了 思路:我们肯定时修改LIS,我们在求得当前结尾得最长长度后,我们遍历前面是否有和当前数相等得数,如果有就把他的长度清零,避免重复方案数,然后我们再用一个数组记录以当前结尾得方案数有多少个 #include<bits/stdc++.h> #define maxn 100005 #define mod 1000000007 usi…