デカルトツリーについての結論ラウンドワン19以上の牛オフサマースクール

トピックポータル //解像度TP nowcoder

分析

定理:B1〜B2のIFF B1とB2は、デカルトツリーの同一の構成を有しています。(B₁〜B₂IFFB₁とB₂は同型デカルトの木を持っています。)

デカルトツリールートの小さなスタックは、各ノードが同時に挿入されると同時にAの構成及びBは、同型か否かを判定することができます。

#include<iostream>
#include<cstdio>
using namespace std;
const int L = 100010;
int a[L],b[L],u[L],v[L];
int n;
void build(){
    u[n + 1] = v[n + 1] + 1;
    int i;
    for(i = 2;i<=n;++i){
        int k1 = i-1,k2 = i-1;
        while(a[i] < a[k1]) k1 = u[k1];
        while(b[i] < b[k2]) k2 = v[k2];
        if(k1!=k2){
            printf("%d\n",i-1);break;
        }
        u[i] = k1;v[i] = k2;
    }
    if(i == n+1) printf("%d\n",n);
}

int main(){
    while(scanf(" %d",&n)!=EOF){
        for(int i = 1;i <= n;++i){
            scanf(" %d",&a[i]);u[i]=0;
        }
        for(int i = 1;i <= n;++i){
            scanf(" %d",&b[i]);v[i]=0;
        }
        build();
    }
    
    
    
    return 0;
}

おすすめ

転載: www.cnblogs.com/tea-egg/p/11259472.html