求助,学校OJ上的这道题过不了
查看原帖
求助,学校OJ上的这道题过不了
982518
sjwhsss楼主2024/7/23 08:35
#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e6+5;
int a[maxn] , dp[maxn] , len = 0;
int read()
{
	int i = 0;
	while(scanf("%d" , &a[++i])!=EOF);
	return i - 1;
}
int main ()
{
	int n = read();
	dp[0]=2147483647;
	for (int i = 1; i <= n; i++)
	{
		if (a[i] <= dp[len])dp[++len]=a[i];
		else 
		{
			int p = upper_bound(dp + 1 , dp + len + 1 , a[i] , greater<int>()) - dp;
			dp[p]=a[i];
		}
	}
	printf("%d\n" , len);
	len = 0;
	memset(dp , 0 , sizeof(dp));
	dp[0]=0;
	for (int i = 1; i <= n; i++)
	{
		if (a[i] > dp[len])dp[++len]=a[i];
		else 
		{
			int p = lower_bound(dp + 1 , dp + len + 1 , a[i]) - dp;
			dp[p]=a[i];
		}
	}
	printf("%d" , len);
	return 0;
}

代码洛谷上能过,但是学校的OJ上50ptsWA,复制洛谷的题解也都是错一样的点

2024/7/23 08:35
加载中...