社区讨论

subtask 1WA,但subtask 0全AC

B3637最长上升子序列参与者 2已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@m1drm74y
此快照首次捕获于
2024/09/23 00:00
去年
此快照最后确认于
2025/11/04 19:52
4 个月前
查看原帖
抱歉,稍微有点标题党。。。。。。
本人尝试用STL,发现用upper_bound时子任务1过不了,更换了lower_bound后全AC了,但不太明白为什么。请问有没有哪位大佬解释一下。
感谢!!!!!
成功AC的代码如下,失败的程序就是把里面的lower_bound替换成upper_bound
CPP
#include<bits/stdc++.h>
using namespace std;
int *a,n,*b,len;   //a数组用于存储输入数据。
int main()
{
	scanf("%d",&n);len=1;
	a=new int[n+1];b=new int[n+1];
	memset(b,0,sizeof(b));  
  	//顺便问一下,动态数组能不能这样做??????
	for(int i=1;i<=n;i++)
		scanf("%d",&a[i]);
	b[len]=a[1];
	for(int i=2;i<=n;i++)
	{
		if(a[i]>b[len])
			b[++len]=a[i];
		else
			b[lower_bound(b+1,b+len+1,a[i])-b]=a[i];
	}
	printf("%d",len);
	return 0;
}

回复

1 条回复,欢迎继续交流。

正在加载回复...