LIS의 또 다른 간단한 방법 nlogn (경로 포함)

897 단어 trickslis
최장 상승 하위 시퀀스(Longest Increasing Subsequence, LIS)는 컴퓨터 과학에서 한 시퀀스 중 가장 긴 단조로운 증가 하위 시퀀스를 말한다.
엄격히 단조로이 점차 증가하다.
첫 번째 방법은 이산화+나무상수조/선단수조인데, 이런 방법은 나무상수조를 배운 사람은 모두 이해할 수 있다.
두 번째는 2점 + dp입니다.상수가 작아지면 시간과 공간이 앞의 것보다 조금 빠르다.
dp[i]=j를 정의하여 길이가 i인 상승 서열의 최소 말단 요소가 j임을 나타낸다.
다음은 코드를 제시하고 상세하게 설명하지 않겠습니다.
#include
#include
#include
#include
using namespace std;
const int maxn=1e5+7;
int p[maxn];
int n;
int dp[maxn];
int who[maxn];
int pre[maxn];
vectorpath;
int main()
{
    scanf("%d",&n);
    for(int i=0;i=0;i--)
                printf("%d ",path[i]);

    return 0;
}

좋은 웹페이지 즐겨찾기