0分TLE求助
查看原帖
0分TLE求助
605945
luo_xiaoran楼主2023/1/4 08:58
#include<bits/stdc++.h>
using namespace std;
int ans1,li=0,n=1,a[100010],dp[100010];
vector<vector<int> > l;
int main()
{
	while(1)
	{
		char x;
		scanf("%d%c",&a[n],&x);
		if(x!=' ')
		{
			break;
		}
		n++;
	}
	dp[n]=ans1=1;
	for(int i=n-1;i>=1;i--)
	{
		for(int j=n;j>i;j--)
		{
			dp[i]=max(dp[i],a[j]<=a[i]?dp[j]+1:1);
		}
		ans1=max(ans1,dp[i]);
	}
	printf("%d\n",ans1);
	vector<int> k;
	k.push_back(a[1]);
	l.push_back(k);
	for(int i=2;i<=n;i++)
	{
		int lb=0;
		bool t=0;
		for(int j=0;j<=li;j++)
		{
			if(l[j].back()>=a[i])
			{
				lb=l[j].back()>l[lb].back()?lb:j;
				t=1;
			}
			else
			{
				if(!t)
				{
					lb++;
				}
			} 
		}
		if(t)
		{
			l[lb].push_back(a[i]);
		}
		else
		{
			vector<int> g;
			g.push_back(a[i]);
			l.push_back(g);
			li++;
		}
	}
	li++;
	printf("%d",li);
	return 0;
}

下载了测试数据,输入输出没区别

2023/1/4 08:58
加载中...