10分求调

P1439 【模板】最长公共子序列

xkm0606 @ 2024-12-20 21:16:34

#include<bits/stdc++.h>
using namespace std;
int main()
{
    long long a,sum=0;
    cin>>a;
    long long b[a],r;
    for(int i=1;i<=a;i++)
    {
        cin>>b[i];
    }
    for(int k=1;k<=a;k++)
    {
        cin>>r;
        if(r==b[k])
        {
            sum++;
        }
    }
    cout<<sum;
}

为啥就十分啊?

分数


by YBJ1006 @ 2024-12-20 21:17:20

错的啊


by xkm0606 @ 2024-12-20 21:20:44

@YBJ1006 哪错了呀?


by MoLing_111 @ 2024-12-20 21:21:03

emmmmmmmmmmmm,这能拿10分建议加强数据,建议去搜一下最长公共子序列的意思,这是一道DP板子题。

百度:最长公共子序列(LCS)是一个在一个序列集合中(通常为两个序列)用来查找所有序列中最长子序列的问题。一个数列 ,如果分别是两个或多个已知数列的子序列,且是所有符合此条件序列中最长的,则称为已知序列的最长公共子序列。


by xkm0606 @ 2024-12-20 21:23:23

@MoLing_111

最长公共子序列(Longest Common Subsequence,简称LCS)是计算机科学和数学中的一个重要概念。它指的是在两个给定序列中,按顺序出现但不必连续的最长子序列。换句话说,LCS是这两个序列的共同部分,且保持它们原有的排列顺序。

例如,对于序列A = [1, 3, 4, 1, 2, 3, 5]和序列B = [3, 4, 1, 2, 1, 3, 5, 6],它们的最长公共子序列是[3, 4, 1, 2, 3, 5],长度为6。

LCS问题广泛应用于生物信息学(如DNA序列比对)、文本比较、版本控制等领域。解决LCS问题的经典算法是动态规划,通过构建一个二维表格来记录子问题的解,从而高效地找到最长公共子序列。

搜过ai了!


by YBJ1006 @ 2024-12-20 21:25:17

正解是二分DP 子序列可以错位出现 你应该只考虑了在同一位上的相等


by Infinity_Fantasy @ 2024-12-20 21:25:58

陆陆陆


by xkm0606 @ 2024-12-20 21:28:08

@YBJ1006

哦!懂了懂了


by YBJ1006 @ 2024-12-20 21:29:41

@xkm0606 你可以先试试朴素的DP 会超时


by xkm0606 @ 2024-12-20 21:31:56

@YBJ1006

我萌新,不会呀


by YBJ1006 @ 2024-12-20 21:33:05

那先学一下DP吧


| 下一页