CSU-1120 病毒(最长递增公共子序列)[通俗易懂]

CSU-1120 病毒(最长递增公共子序列)

大家好,又见面了,我是全栈君。

你有一个日志文件,里面记录着各种系统事件的详细信息。自然的,事件的时间戳按照严格递增顺序排列(不会有两个事件在完全相同的时刻发生)。
遗憾的是,你的系统被病毒感染了,日志文件中混入了病毒生成的随机伪事件(但真实事件的相对顺序保持不变)。备份的日志文件也被感染了,但由于病毒采用的随机感染方法,主日志文件和备份日志文件在感染后可能会变得不一样。
给出被感染的主日志和备份日志,求真实事件序列的最长可能长度。
 

Input

输入第一行为数据组数T (T<=100)。每组数据包含两行,分别描述感染后的主日志和备份日志。
每个日志文件的格式相同,均为一个整数n (1<=n<=1000)(代表感染后的事件总数)和n 个不超过100,000的正整数(表示感染后各事件的时间戳)。
注意,感染后可能会出现时间戳完全相同的事件。

Output

对于每组数据,输出真实事件序列的最长可能长度。

Sample Input

1
9 1 4 2 6 3 8 5 9 1
6 2 7 6 3 5 1

Sample Output

3
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>

using namespace std;
const int N = 1000 + 5;
int dp[N], a[N], b[N];

void Work(int n, int m){
    int M;
    memset(dp, 0, sizeof(dp));
    for(int i = 1; i <= n; i++){
        M = 0;
        for(int j = 1; j <= m; j++){
            if(a[i] > b[j] && M < dp[j])
                M = dp[j];
            if(a[i] == b[j])
                dp[j] = M + 1;
        }
    }
    printf("%d\n", *max_element(dp + 1, dp + m + 1));
}
int main(){
    int T, n, m;
    scanf("%d", &T);
    while(T --){
        scanf("%d", &n);
        for(int i = 1; i <= n; i++) scanf("%d", &a[i]);
        scanf("%d", &m);
        for(int i = 1; i <= m; i++) scanf("%d", &b[i]);
        Work(n, m);
    }
}

 

转载于:https://www.cnblogs.com/Pretty9/p/7406937.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/108216.html原文链接:https://javaforall.net

(0)
上一篇 2022年3月6日 下午2:00
下一篇 2022年3月6日 下午3:00


相关推荐

  • 【python】pandas读取csv格式数据时header参数设置

    【python】pandas读取csv格式数据时header参数设置写在前面使用 pandas 中 read csv 读取 csv 数据时 对于有表头的数据 将 header 设置为空 None 会报错 pandas libs parsers pyxinpandas libs parsers raise parser error ParserError Errortokeniz Cerror Expected4fie

    2026年3月26日
    2
  • java重复执行定时器_Spring的quartz定时器重复执行二次的问题解决

    java重复执行定时器_Spring的quartz定时器重复执行二次的问题解决Spring 的 quartz 定时器同一时刻重复执行二次的问题解决最近用 Spring 的 quartz 定时器的时候 发现到时间后 任务总是重复执行两次 在 tomcat 或 jboss 下都如此 打印出他们的 hashcode 发现是不一样的 也就是说 在 web 容器启动的时候 重复启了两个 quartz 线程 研究下来发现 quartz 确实会加载两次 第一次 web 容器启动的时候 读取 applicationC

    2026年3月17日
    2
  • 文件上传漏洞攻击与防范方法[通俗易懂]

    文件上传漏洞攻击与防范方法[通俗易懂]文件上传漏洞攻击与防范方法文件上传漏洞简介:文件上传漏洞是web安全中经常用到的一种漏洞形式。是对数据与代码分离原则的一种攻击。上传漏洞顾名思义,就是攻击者上传了一个可执行文件如木马,病毒,恶意脚本,WebShell等到服务器执行,并最终获得网站控制权限的高危漏洞。文件上传漏洞危害:上传漏洞与SQL注入或XSS相比,其风险更大,如果Web应用程序存在上传漏洞,攻击者上传…

    2022年4月19日
    355
  • Hunyuan HY-MT1.5保姆级教程:从零部署到网页推理调用

    Hunyuan HY-MT1.5保姆级教程:从零部署到网页推理调用

    2026年3月12日
    2
  • lda指令是什么意思_汇编指令大全

    lda指令是什么意思_汇编指令大全754 群指令系统指令内容装入 LDA 将存储器装入累加器或变址 X 指定的存储器 LDM 将立即数装入存储器 LDX 将存储器装入变址 XLDY 将存储器装入变址 Y 存储 STA 将累加器存入存储器 STX 将变址 X 存入存储器 STY 将变址 Y 存入存储器转移 TAX 将累加器转移至变址 XTXA 将变址 X 转移至累加器 TAY 将累加器转移至变址 YTYA 将变址 Y 转移至累加器 TSX 将堆栈指针转至变址 XTXS 将变址 X 转移至堆栈指针堆栈操作 PHA 将累

    2026年3月26日
    3
  • 手动更新PIP(手机怎么手动更新)

    有时候使用命令行无法更新PIP,此时需要手动进行更新。可以参考:https://blog.csdn.net/lyj_viviani/article/details/70568434

    2022年4月11日
    39

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号