D. Alyona and Strings 解析(思維、DP)
Codeforce 682 D. Alyona and Strings 解析(思維、DP)
今天我們來看看CF682D
題目連結
題目
略,請直接看原題。
前言
a

想法
首先會感覺應該是類似\(LCS\)的問題,但是有一點變形。因此我們會先想到應該是\(DP\),而可能會想到另外兩個狀態是:
- 共同部分是不是目前兩個字串前綴的結尾
- 最小的分段是幾段
也就是\(: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)的更多相关文章
- B. Kay and Snowflake 解析(思維、DFS、DP、重心)
		Codeforce 685 B. Kay and Snowflake 解析(思維.DFS.DP.重心) 今天我們來看看CF685B 題目連結 題目 給你一棵樹,要求你求出每棵子樹的重心. 前言 完全不 ... 
- C. Vladik and Memorable Trip 解析(思維、DP)
		Codeforce 811 C. Vladik and Memorable Trip 解析(思維.DP) 今天我們來看看CF811C 題目連結 題目 給你一個數列,一個區段的數列的值是區段內所有相異數 ... 
- D. New Year Santa Network 解析(思維、DFS、組合、樹狀DP)
		Codeforce 500 D. New Year Santa Network 解析(思維.DFS.組合.樹狀DP) 今天我們來看看CF500D 題目連結 題目 給你一棵有邊權的樹,求現在隨機取\(3 ... 
- B. Once Again... 解析(思維、DP、LIS、矩陣冪)
		Codeforce 582 B. Once Again... 解析(思維.DP.LIS.矩陣冪) 今天我們來看看CF582B 題目連結 題目 給你一個長度為\(n\)的數列\(a\),求\(a\)循環 ... 
- B. Nauuo and Circle 解析(思維、DP)
		Codeforce 1172 B. Nauuo and Circle 解析(思維.DP) 今天我們來看看CF1172B 題目連結 題目 略,請直接看原題 前言 第一個該觀察的事情一直想不到,看了解答也 ... 
- D. Maximum Distributed Tree 解析(思維、DFS、組合、貪心、DP)
		Codeforce 1401 D. Maximum Distributed Tree 解析(思維.DFS.組合.貪心.DP) 今天我們來看看CF1401D 題目連結 題目 直接看原題比較清楚,略. 前 ... 
- A. Arena of Greed 解析(思維)
		Codeforce 1425 A. Arena of Greed 解析(思維) 今天我們來看看CF1425A 題目連結 題目 略,請直接看原題. 前言 明明是難度1400的題目,但總感覺不是很好寫阿, ... 
- E. Almost Regular Bracket Sequence 解析(思維)
		Codeforce 1095 E. Almost Regular Bracket Sequence 解析(思維) 今天我們來看看CF1095E 題目連結 題目 給你一個括號序列,求有幾個字元改括號方向 ... 
- C2. Power Transmission (Hard Edition) 解析(思維、幾何)
		Codeforce 1163 C2. Power Transmission (Hard Edition) 解析(思維.幾何) 今天我們來看看CF1163C2 題目連結 題目 給一堆點,每兩個點會造成一 ... 
随机推荐
- 喜大普奔!GitHub中文版帮助文档上线了!
			日前,GitHub 文档的简体中文正式发布,开发者可以到官方文档上随意查阅浏览中文文档啦! 对于想要玩 GitHub,但一直苦于英语水平较差的程序员来说,这真是一个天大的好消息.下面一起来感受一下 ... 
- mapreduce的一些简单使用
			一.键值对RDD的创建 1.从文件中加载 /opt目录下创建wordky.txt文件. wordky.txt文件中输入以下三行字符: Hadoop is good Spark is fast Spar ... 
- 003  01 Android 零基础入门  01 Java基础语法 01 Java初识 03 Java程序的执行流程
			003 01 Android 零基础入门 01 Java基础语法 01 Java初识 03 Java程序的执行流程 Java程序长啥样? 首先编写一个Java程序 记事本编写程序 打开记事本 1.wi ... 
- Python实现的数据结构与算法之链表详解
			一.概述 链表(linked list)是一组数据项的集合,其中每个数据项都是一个节点的一部分,每个节点还包含指向下一个节点的链接.根据结构的不同,链表可以分为单向链表.单向循环链表.双向链表.双向循 ... 
- mysql插入数据报 (Incorrect string value: '\xB6\xFE' for column 'name' at row 1)
			这是我的表结构 mysql> describe students; +--------+---------------------+------+-----+---------+-------- ... 
- 设备通讯——RS232
			RS232的接口有两种--一种公头.一种母头,两种头的引脚是有区别的 MAX232电路图: 注意:串口通讯需要交叉接线. 
- Acticiti流程引擎在已知当前流程定义id的情况下获取当前流程的所有信息(包括:节点和连线)
			这里我们已知流程已经部署,我的需求是获取当前流程的所有任务节点,我使用instanceof关键字来进行匹配 private List<UserTask> getProcessUserTas ... 
- dgraph 使用简介
			dgraph 简介 dgraph 使用示例(基于 golang) golang client 安装 创建 schema 数据的 CURD 事务 总结 dgraph 简介 dgraph 是基于 gola ... 
- 2020年在项目中使用MVVM正确姿势,你用对了吗?
			最近看到了几篇与 Jetpack MVVM 有关到文章,使我不禁也想淌一下这场混水.我是在 2017 年下半年接触的 Jetpack 的那套开发工具,并且后来一直将其作为开发的主要框架.在这段时间的使 ... 
- day20 Pyhton学习 面向对象-成员
			一.类的成员 class 类名: # 方法 def __init__(self, 参数1, 参数2....): # 属性变量 self.属性1 = 参数1 self.属性2 = 参数2 .... # ... 
