最长上升子序列模板(LIS)

文章目录

意思

就是求一个数组的最大上升子序列

模板1

用动态规划来求嗯这里不再过多解释,哔哩哔哩董晓算法老师讲得非常好可以看看

#include <bits/stdc++.h>
#define int long long
#define endl '\n'
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
using namespace std;
int m[200010],dp[200010]; 
signed main()
{
	IOS
	int T=1;
	//cin>>T;
	while(T--)
	{
		int ma=0,n;
		cin>>n;
		for(int i=1;i<=n;i++)
		   dp[i]=1;
		for(int i=1;i<=n;i++)
		cin>>m[i];
		for(int i=1;i<=n;i++)
		{
			for(int j=1;j<=i;j++)
			{
				if(m[i]>m[j])
				dp[i]=max(dp[j]+1,dp[i]);
			}
			ma=max(ma,dp[i]);
		}
		cout<<ma<<endl;
	}
	return 0;
}

模板2

用二分来求嗯这里不再过多解释,这个也是董晓算法老师讲的比较好

#include <bits/stdc++.h>
#define int long long
#define endl '\n'
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
using namespace std;
int a[200010],b[200010],t;
signed main()
{
	IOS
	int T=1;
	//cin>>T;
	while(T--)
	{
		int n,cnt=0;;
		cin>>n;
		for(int i=1;i<=n;i++)
		cin>>a[i];
		for(int i=1;i<=n;i++)
		{
			if(a[i]>b[cnt])
			b[++cnt]=a[i];
			else
			{
				int l=0,r=cnt;
				while(l<r)
				{
					int mid=(l+r)/2;
					if(b[mid]>=a[i])
					r=mid;
					else
					l=mid+1; 
				}
				b[r]=a[i];
			}
		}
		cout<<cnt<<endl;
	}
	return 0;
}

用动态规划来写的话时间复杂度是O(n2),如果范围比较大一点的题就会超时,所以可以用模板2来写二分写的话时间复杂度是O(n*logn)

相关推荐

  1. 上升序列模板LIS

    2024-07-19 11:38:02       22 阅读
  2. 备战蓝桥杯---上升序列LIS模板

    2024-07-19 11:38:02       39 阅读
  3. 上升序列(递增序列,LIS)

    2024-07-19 11:38:02       20 阅读
  4. 备战蓝桥杯 Day8(上升序列LIS模型

    2024-07-19 11:38:02       29 阅读
  5. 从一道板子题了解LIS(上升序列)

    2024-07-19 11:38:02       63 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-19 11:38:02       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-19 11:38:02       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-19 11:38:02       58 阅读
  4. Python语言-面向对象

    2024-07-19 11:38:02       69 阅读

热门阅读

  1. Apache-BeanUtils VS SpringBean-Utils

    2024-07-19 11:38:02       15 阅读
  2. MySQL中为什么不推荐使用 text 类型?

    2024-07-19 11:38:02       18 阅读
  3. 华为云认证

    2024-07-19 11:38:02       19 阅读
  4. TF和TF-IDF区别和联系

    2024-07-19 11:38:02       18 阅读
  5. K8S内存资源配置

    2024-07-19 11:38:02       22 阅读