使用数据结构,最大上升子串问题
来源:互联网 发布:网络手势图片意思 编辑:程序博客网 时间:2024/06/03 20:03
#include<cstdio>
#include<algorithm>
#include<iostream>
#include<cstring>
using namespace std;
#define maxn 200010
int num[maxn], l[maxn], r[maxn], Min[maxn];
int main() {
int test, n;
scanf("%d", &test);
while(test--) {
scanf("%d", &n);
for(int i = 1; i <= n; i++)
scanf("%d", &num[i]);
l[1] = 1;
for(int i = 2; i <= n; i++)//最大连续上升子序列问题,维护一个连续数组,遍历原数组截取最长子串
l[i] = num[i] > num[i - 1] ? l[i - 1] + 1: 1;
for(int i=1;i<=n;i++)printf("%d ",l[i]);
cout<<"11111111111111"<<endl;
r[n] = 1;
for(int i = n - 1; i >= 1; i--)
r[i] = num[i] < num[i + 1] ? r[i + 1] + 1: 1;
for(int i=1;i<=n;i++)printf("%d ",r[i]);
cout<<"22222222222222"<<endl;
int ans = 0;
memset(Min,0x3f,sizeof(Min));
for(int i = 1; i <= n; i++) {
int len = lower_bound(Min+1,Min+1+n,num[i]) - Min;
ans = max(ans,r[i] + len - 1);
Min[l[i]] = min(Min[l[i]],num[i]);
cout<<len<<" "<<ans<<" "<<Min[l[i]]<<" "<<l[i]<<" "<<r[i]<<" test"<<endl;
}
printf("%d\n",ans);
}
return 0;
}
#include<algorithm>
#include<iostream>
#include<cstring>
using namespace std;
#define maxn 200010
int num[maxn], l[maxn], r[maxn], Min[maxn];
int main() {
int test, n;
scanf("%d", &test);
while(test--) {
scanf("%d", &n);
for(int i = 1; i <= n; i++)
scanf("%d", &num[i]);
l[1] = 1;
for(int i = 2; i <= n; i++)//最大连续上升子序列问题,维护一个连续数组,遍历原数组截取最长子串
l[i] = num[i] > num[i - 1] ? l[i - 1] + 1: 1;
for(int i=1;i<=n;i++)printf("%d ",l[i]);
cout<<"11111111111111"<<endl;
r[n] = 1;
for(int i = n - 1; i >= 1; i--)
r[i] = num[i] < num[i + 1] ? r[i + 1] + 1: 1;
for(int i=1;i<=n;i++)printf("%d ",r[i]);
cout<<"22222222222222"<<endl;
int ans = 0;
memset(Min,0x3f,sizeof(Min));
for(int i = 1; i <= n; i++) {
int len = lower_bound(Min+1,Min+1+n,num[i]) - Min;
ans = max(ans,r[i] + len - 1);
Min[l[i]] = min(Min[l[i]],num[i]);
cout<<len<<" "<<ans<<" "<<Min[l[i]]<<" "<<l[i]<<" "<<r[i]<<" test"<<endl;
}
printf("%d\n",ans);
}
return 0;
}
0 0
- 使用数据结构,最大上升子串问题
- 最大上升子序列
- 最大上升子列
- 最大上升子序列
- 最大上升子序列
- 最大上升子序列
- 【数据结构】最大子序列问题
- hdu1160 最大上升子序列问题+输出路径
- 1087 最大上升子序列
- 最大上升子序列和
- 最大上升子序列和
- 最大上升子序列和
- hdu1950 最大上升子序列
- 最大上升子序列(LIS)
- 最大上升子序列和
- 最大上升子序列和
- 全部最大上升子序列
- 最大上升子序列-python
- 使用NetBeans访问CSDN Code项目
- Java IO中转换流的作用
- Hive 笔记异常
- Tiny tiny RSS安装
- Leetcode 234. Palindrome Linked List
- 使用数据结构,最大上升子串问题
- 剑指Offer 24题 二叉搜索树的后序遍历序列 Java
- 拒绝从入门到放弃_《鸟哥的 Linux 私房菜 — 基础学习篇(第三版)》必读目录
- Python.You-Get -- Python的视频下载工具[推荐玩玩]
- notepad++ key words 设置
- Uva1451 数形结合
- solve 方法总结
- DIV与前面的控件在同一行显示.
- 手把手教你如何安装和使用Karma-Jasmine