传送门:Sequence in the Pocket

Sample Input
2
4
1 3 2 4
5
2 3 3 5 5
Sample Output
2
0

代码:
#include<bits/sdc++.h>
using namespace std;
int main()
{
int t;
scanf("%d",&t);
while(t--){
int a,b,c,d,m;
scanf("%d",&a);
m=0;
int A[a+5];
int B[a+5];
int C[a+5];
memset(A,0,sizeof(A));
memset(B,0,sizeof(B));
memset(C,0,sizeof(C));
for(int i=0;i<a;i++){
scanf("%d",&A[i]);
}
b=c=0;
for(int i=0;i<a;i++){
if(b==0||B[b-1]<=A[i]){
B[b++]=A[i];
}else{
c++;
m=max(m,A[i]);
}
}
d=c;
for(int i=0;i<b;i++){
if(B[i]<m)
d++;
else
break;
}
printf("%d\n",d);
}
return 0;
}
这是一个关于序列处理的编程挑战,输入包括两个整数和两个序列,程序需要找到序列B中不小于序列A中元素的最大长度子序列。提供的代码实现了这一逻辑,通过比较和计数找到满足条件的子序列长度。
1635

被折叠的 条评论
为什么被折叠?



