dp.3 最长公共子序列

## 最长公共子序列
依旧是dp的入门题目,考虑用f[i][j]表示第一行的i个字母与第二行的j个字母能构成的最长解是多少,然后用当前阶段推下一阶段。
对与dp[i][j],若arr[i]==brr[j]则f[i][j]取f[i-1][j-1]+1即可,若不等的话,则转移到f[i][j-1],或者f[i-1][j]即可,即不匹配后放弃第一行的i或者放弃第二行的j,取max即可。

#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <memory.h>
using namespace std;
const int N = 1200;
char arr[N],brr[N];
int n,m,f[N][N];
int main()
{
    ios::sync_with_stdio(0);
    cin>>n>>m>>arr+1>>brr+1;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            if(arr[i]==brr[j]){
                f[i][j]=max(f[i][j],f[i-1][j-1]+1);
            }
            else f[i][j]=max(f[i][j-1],f[i-1][j]);
        }
    }
    cout<<f[n][m]<<endl;
    return 0;
}

### 使用 Docker 实现在线系统的逻辑 #### 背景介绍 现代在线系统通常依赖于容器化技术来提供安全、隔离和可扩展的运行环境。Docker 是一种流行的容器化工具,能够帮助开发者快速构建、部署和管理应用程序及其运行时环境。通过使用 Docker,可以有效解决不同编程语言运行环境之间的兼容性和安全性。 --- #### 容器化的必要性 为了支持多种编程语言以及复杂的评测需求,在线系统需要具备高度的安全性和灵活性。传统的虚拟虽然提供了足够的隔离能力,但由于启动时间较长且资源消耗较大,并不适合高频次的任务调度场景。而 Docker 提供了一种轻量级的解决方案,能够在短时间内创建和销毁容器实例,从而满足实时评测的需求[^2]。 --- #### 基于 Docker架构设计 以下是基于 Docker 构建在线系统的典型架构: 1. **任务接收与分配** 上层服务负责接收用户的提交请求并将这些请求转化为具体的评测任务。此过程可能涉及解析代码文件、指定测试数据集等内容。随后,该任务会被发送至消息队列等待进一步处理[^3]。 2. **动态生成镜像或复用已有镜像** 针对每种目标语言预先准备相应的基础镜像(Base Image),例如 Python、C++ 或 Java 所需的基础库和支持组件。当接收到新的评测任务时,可以根据所需的语言特性拉取对应的官方镜像或者自定义版本[^1]。 3. **执行评测任务** 创建临时性的容器用于实际运行用户提交的代码片段。在此阶段需要注意设置合理的 CPU 和内存限额以防止单一恶意脚本占用过多计算资源影响整体性能表现。同时还需要挂载必要的输入/输出路径以便传递测试案例给内部程序调用。 4. **捕获结果并清理环境** 运行结束后立即终止当前容器实例防止任何潜在风险残留下来污染后续操作。接着读取出日志记录分析最终成绩反馈给前端界面展示出来完成整个闭环流程。 --- #### 示例代码:简单的 Dockerfile 编写 下面展示了针对 C/C++ 类型目所编写的一个基本 `Dockerfile` 文件模板: ```dockerfile FROM gcc:latest AS builder WORKDIR /app COPY . . RUN g++ main.cpp -o program.out CMD ["./program.out"] ``` 上述配置说明如下: - 选择了最新的 GCC 工具链作为基底; - 将工作目录设定为 `/app`; - 复制主上的所有内容到容器内的相同位置; - 编译名为 `main.cpp` 的源码生成二进制可执行文件; - 默认命令指向刚刚生产的产物以方便直接启动验证效果。 --- #### 性能优化建议 尽管利用 Docker 可以为 OJ 平台带来诸多便利之处但仍存在一些挑战比如冷启动延迟较高可能会拖慢用户体验因此可以从以下几个方面入手改进效率: - **缓存制**: 对频繁使用的公共镜像实施本地存储减少网络下载次数加快初始化速度。 - **批量作业模式**: 如果允许的话尝试一次打包多个独立子进程共同进入单一大规模容器内运作降低开销比例。 - **硬件加速选项**: 启用特定厂商提供的 GPU/FPGA 加速插件提升复杂算法运算效能缩短耗时时长. ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值