zoukankan      html  css  js  c++  java
  • luogu P1439 【模板】最长公共子序列(LCS)

    题目qwq

    (第一道蓝题)

    先把第一个序列每个数出现的顺序记下来(数字本身不用记),

    然后第二个序列的每个数都对照它的顺序,这样只要得到一个升序的序列就行了qwq

    如果遇到出现顺序在前面的数,就用二分法找一下它的位置,然后把原来存下来的顺序覆盖掉

    #include<cstdio>
    using namespace std;
    int f[100005],ans[100005];
    int n,sum;
    int k,l,r,now,mid;
    int main() {
        scanf("%d",&n);
        for(int i = 1; i <= n; i++) {
            scanf("%d",&k);
            f[k] = i;
        }
        for(int i = 1; i <= n; i++) {
            scanf("%d",&k);
            now = f[k];
            if(now > ans[sum])
                ans[++sum] = now;
            else {
                l = 1,r = sum;
                while(l < r) {
                    mid = (l+r)/2;
                    if (ans[mid]<now)l = mid+1;
                    else r = mid;
                }
                ans[l] = now;
            }
        }
        printf("%d",sum);
        return 0;
    }
    View Code
  • 相关阅读:
    scan design rules
    scan cell
    DFT basics
    测试性分析
    DFT设计绪论
    clock gate cell
    Linux命令
    Multi-voltage和power gating的实现
    Power Gating的设计(架构)
    Power Gating的设计(模块二)
  • 原文地址:https://www.cnblogs.com/mogeko/p/9859379.html
Copyright © 2011-2022 走看看