zoukankan      html  css  js  c++  java
  • Codeforces Round #264 (Div. 2) D

    题意: 给出最多5个序列,问这几个序列的最长公共子序列的长度是多少。

    solution : 脑抽级别我是,第一个序列每个数字位置固定,这样只要维护一个k-1维的偏序集就好了。然后在保证每个位置合法的情况下

    走一遍最长上升子序列就好了。

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 const int inf = 0x3f3f3f3f;
     4 const int MAX = 1000+10;
     5 int a[MAX],x;
     6 int dp[MAX];
     7 int L[10][MAX];
     8 int main() {
     9     int n,k;
    10     while(scanf("%d %d",&n,&k)==2) {
    11         for(int i=1;i<=n;i++) {
    12             scanf("%d",&a[i]);
    13         }
    14         for(int i=1;i<k;i++) {
    15             for(int j=1;j<=n;j++) {
    16                 scanf("%d",&x);
    17                 L[i][x]=j;
    18             }
    19         }
    20         memset(dp,-1,sizeof(dp));
    21         bool  flag ;
    22         for(int i=1;i<=n;i++) {
    23             dp[i]=1;
    24             for(int j=1;j<i;j++) {
    25                 flag=true;
    26                 for(int m=1;m<k;m++) {
    27                     if(L[m][a[i]]<L[m][a[j]]) flag = false;
    28                 }
    29                 if(flag) dp[i]=max(dp[i],dp[j]+1);
    30             }
    31         }
    32         int ans=-inf;
    33         for(int i=1;i<=n;i++) ans=max(ans,dp[i]);
    34         printf("%d ",ans);
    35     }
    36     return 0;

    37 } 

  • 相关阅读:
    查找一段信号的累加峰值---verilog
    AXI_stream接口时序温习
    QAM调制---Verilog代码
    数据交织模块---Verilog代码
    卷积编码后的删余模块---Verilog代码
    数据发送模块---基于地址的检测(verilog代码)
    短训练序列---Verilog代码
    长训练序列---verilog代码
    数据扰码器---Verilog代码
    卷积编码器---Verilog代码
  • 原文地址:https://www.cnblogs.com/acvc/p/3946845.html
Copyright © 2011-2022 走看看