社区讨论

贪心怎么不行?#1 WA了

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

讨论操作

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

当前回复
1 条
当前快照
1 份
快照标识符
@lx5hg5k2
此快照首次捕获于
2024/06/08 10:15
2 年前
此快照最后确认于
2024/06/08 12:39
2 年前
查看原帖
C
#include<stdio.h>
int f(int *a,int n,int b){
    int l=0,r=n,mid=(l+r)/2;
    while(l<=r){
        if(a[mid]<=b){
            l=mid+1;
        }else{
            r=mid-1;
        }
        mid=(l+r)/2;
    }
    return l;
}
int main(){
    int n,len=1;
    scanf("%d",&n);
    int s[n],low[n];
    scanf("%d",&s[0]);
    low[0]=s[0];
    for(int i=1;i<n;i++){
        scanf("%d",&s[i]);
        if(s[i]>low[len-1]){
            low[len++]=s[i];
        }else if(s[i]<low[len-1]){
            low[f(low,len-1,s[i])]=s[i];
        }
    }
    printf("%d",len);
    return 0;
}

回复

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

正在加载回复...