其他分享
首页 > 其他分享> > 1045 Favorite Color Stripe (30 分)

1045 Favorite Color Stripe (30 分)

作者:互联网

题意:给定一个序列A,给定一个序列B,在A中找到满足序列B的最长不下降子序列
思路:维护一个B的顺序表,以O(1)得到颜色之间的大小关系,LIS模板

#include<iostream>
#include<vector>

using namespace std;

const int N = 210, M = 10010;

int order[N];
int f[M], s[M];


int n, m, l;

int main(){
    cin >> n >> m;
    
    for(int i = 1; i <= m; i ++){
        int c;
        cin >> c;
        order[c] = i;
    }
    
    cin >> l;
    
    for(int i = 0; i < l; i ++) cin >> s[i];
    
    for(int i = 0; i < l; i ++){
        int mx = 0;
        
        for(int j = 0; j < i; j ++)
            if(order[s[j]] <= order[s[i]]) 
                mx = max(mx, f[j]);
                
        if(order[s[i]]) f[i] = mx + 1;
    }
    
    cout << f[l - 1] << endl;
    
    return 0;
}

标签:Color,++,30,Favorite,cin,int,序列,include,order
来源: https://www.cnblogs.com/tomori/p/14962482.html