Codeforce 682 D. Alyona and Strings 解析(思維、DP)

今天我們來看看CF682D

題目連結

題目

略,請直接看原題。

前言

a

想法

首先會感覺應該是類似\(LCS\)的問題,但是有一點變形。因此我們會先想到應該是\(DP\),而可能會想到另外兩個狀態是:

  1. 共同部分是不是目前兩個字串前綴的結尾
  2. 最小的分段是幾段

也就是\(:dp[i][j][end][k]=\)最長長度,\(end=0:\)非結尾,\(end=1:\)是結尾

那麼我們就會發現轉移式\(:dp[i][j][0][c]=\)

\(\max\)\(\begin{cases}
dp[i-1][j][1][c],\ dp[i-1][j][0][c]\\
dp[i][j-1][1][c],\ dp[i][j-1][0][c]\\
dp[i-1][j-1][1][c],\ dp[i-1][j-1][0][c]\\
\end{cases}\)

且如果\(s[i]\neq t[j]:dp[i][j][1][c]=0\)

如果\(s[i]=t[j]:dp[i][j][1][c]=\)

\(\max\{dp[i-1][j-1][1][c]+1,\ dp[i-1][j-1][0][c-1]+1\}\)

程式碼:

const int _n=1010;
int n,m,k,dp[_n][_n][2][11];
char s[_n],t[_n];
main(void) {cin.tie(0);ios_base::sync_with_stdio(0);
cin>>n>>m>>k>>(s+1)>>(t+1);
rep(i,0,m+1)rep(c,1,k+1)dp[0][i][0][c]=dp[0][i][1][c]=-1e5;
rep(i,0,n+1)rep(c,1,k+1)dp[i][0][0][c]=dp[i][0][1][c]=-1e5;
rep(i,1,n+1)rep(j,1,m+1)rep(c,1,k+1){
dp[i][j][0][c]=max(dp[i][j][0][c],dp[i-1][j][1][c]);
dp[i][j][0][c]=max(dp[i][j][0][c],dp[i-1][j][0][c]);
dp[i][j][0][c]=max(dp[i][j][0][c],dp[i][j-1][1][c]);
dp[i][j][0][c]=max(dp[i][j][0][c],dp[i][j-1][0][c]);
dp[i][j][0][c]=max(dp[i][j][0][c],dp[i-1][j-1][1][c]);
dp[i][j][0][c]=max(dp[i][j][0][c],dp[i-1][j-1][0][c]);
if(s[i]==t[j]){
dp[i][j][1][c]=max(dp[i][j][1][c],dp[i-1][j-1][1][c]+1);
dp[i][j][1][c]=max(dp[i][j][1][c],dp[i-1][j-1][0][c-1]+1);
}else dp[i][j][1][c]=0;
}ll maxx=0;rep(i,1,n+1)rep(j,1,m+1)rep(c,1,k+1){
maxx=max(maxx,max(dp[i][j][0][c],dp[i][j][1][c]));
}cout<<maxx<<'\n';
return 0;
}

標頭、模板請點Submission看

Submission

D. Alyona and Strings 解析(思維、DP)的更多相关文章

  1. B. Kay and Snowflake 解析(思維、DFS、DP、重心)

    Codeforce 685 B. Kay and Snowflake 解析(思維.DFS.DP.重心) 今天我們來看看CF685B 題目連結 題目 給你一棵樹,要求你求出每棵子樹的重心. 前言 完全不 ...

  2. C. Vladik and Memorable Trip 解析(思維、DP)

    Codeforce 811 C. Vladik and Memorable Trip 解析(思維.DP) 今天我們來看看CF811C 題目連結 題目 給你一個數列,一個區段的數列的值是區段內所有相異數 ...

  3. D. New Year Santa Network 解析(思維、DFS、組合、樹狀DP)

    Codeforce 500 D. New Year Santa Network 解析(思維.DFS.組合.樹狀DP) 今天我們來看看CF500D 題目連結 題目 給你一棵有邊權的樹,求現在隨機取\(3 ...

  4. B. Once Again... 解析(思維、DP、LIS、矩陣冪)

    Codeforce 582 B. Once Again... 解析(思維.DP.LIS.矩陣冪) 今天我們來看看CF582B 題目連結 題目 給你一個長度為\(n\)的數列\(a\),求\(a\)循環 ...

  5. B. Nauuo and Circle 解析(思維、DP)

    Codeforce 1172 B. Nauuo and Circle 解析(思維.DP) 今天我們來看看CF1172B 題目連結 題目 略,請直接看原題 前言 第一個該觀察的事情一直想不到,看了解答也 ...

  6. D. Maximum Distributed Tree 解析(思維、DFS、組合、貪心、DP)

    Codeforce 1401 D. Maximum Distributed Tree 解析(思維.DFS.組合.貪心.DP) 今天我們來看看CF1401D 題目連結 題目 直接看原題比較清楚,略. 前 ...

  7. A. Arena of Greed 解析(思維)

    Codeforce 1425 A. Arena of Greed 解析(思維) 今天我們來看看CF1425A 題目連結 題目 略,請直接看原題. 前言 明明是難度1400的題目,但總感覺不是很好寫阿, ...

  8. E. Almost Regular Bracket Sequence 解析(思維)

    Codeforce 1095 E. Almost Regular Bracket Sequence 解析(思維) 今天我們來看看CF1095E 題目連結 題目 給你一個括號序列,求有幾個字元改括號方向 ...

  9. C2. Power Transmission (Hard Edition) 解析(思維、幾何)

    Codeforce 1163 C2. Power Transmission (Hard Edition) 解析(思維.幾何) 今天我們來看看CF1163C2 題目連結 題目 給一堆點,每兩個點會造成一 ...

随机推荐

  1. 喜大普奔!GitHub中文版帮助文档上线了!

    日前,GitHub 文档的简体中文正式发布,开发者可以到官方文档上随意查阅浏览中文文档啦!   对于想要玩 GitHub,但一直苦于英语水平较差的程序员来说,这真是一个天大的好消息.下面一起来感受一下 ...

  2. mapreduce的一些简单使用

    一.键值对RDD的创建 1.从文件中加载 /opt目录下创建wordky.txt文件. wordky.txt文件中输入以下三行字符: Hadoop is good Spark is fast Spar ...

  3. 003 01 Android 零基础入门 01 Java基础语法 01 Java初识 03 Java程序的执行流程

    003 01 Android 零基础入门 01 Java基础语法 01 Java初识 03 Java程序的执行流程 Java程序长啥样? 首先编写一个Java程序 记事本编写程序 打开记事本 1.wi ...

  4. Python实现的数据结构与算法之链表详解

    一.概述 链表(linked list)是一组数据项的集合,其中每个数据项都是一个节点的一部分,每个节点还包含指向下一个节点的链接.根据结构的不同,链表可以分为单向链表.单向循环链表.双向链表.双向循 ...

  5. mysql插入数据报 (Incorrect string value: '\xB6\xFE' for column 'name' at row 1)

    这是我的表结构 mysql> describe students; +--------+---------------------+------+-----+---------+-------- ...

  6. 设备通讯——RS232

    RS232的接口有两种--一种公头.一种母头,两种头的引脚是有区别的 MAX232电路图: 注意:串口通讯需要交叉接线.

  7. Acticiti流程引擎在已知当前流程定义id的情况下获取当前流程的所有信息(包括:节点和连线)

    这里我们已知流程已经部署,我的需求是获取当前流程的所有任务节点,我使用instanceof关键字来进行匹配 private List<UserTask> getProcessUserTas ...

  8. dgraph 使用简介

    dgraph 简介 dgraph 使用示例(基于 golang) golang client 安装 创建 schema 数据的 CURD 事务 总结 dgraph 简介 dgraph 是基于 gola ...

  9. 2020年在项目中使用MVVM正确姿势,你用对了吗?

    最近看到了几篇与 Jetpack MVVM 有关到文章,使我不禁也想淌一下这场混水.我是在 2017 年下半年接触的 Jetpack 的那套开发工具,并且后来一直将其作为开发的主要框架.在这段时间的使 ...

  10. day20 Pyhton学习 面向对象-成员

    一.类的成员 class 类名: # 方法 def __init__(self, 参数1, 参数2....): # 属性变量 self.属性1 = 参数1 self.属性2 = 参数2 .... # ...