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. 最新版PyCharm激活教程!有效期至2089年!

    Python的编译器有很多,像Pycharm.VsCode.Jupyter...哪个好用不做评价,各有各的优点!用过PyCharm的同学都知道,PyCharm有两大版本,专业版和社区版,专业版相当于社 ...

  2. Cadence OrCAD如何查看整页原理图中的元件的属性

    转载: 1.选中DSN文件右键"Edit Object Properties ".在这里插入图片描述2.单击选择"Pivot"按钮. 3.找到Part refe ...

  3. Unicode和多字节字符集

    今天自己写的发现一个输出路径程序使用unicode字符集只能输出单个的首字符,问了一下同事,改为使用多字节字符集,问题解决了 于是上网看了他们的区别:  很多没看完,但起码了解到字符集的演变过程, 转 ...

  4. 【题解】 P2734 [USACO3.3]游戏 A Game

    \(\color{purple}{Link}\) \(\text{Solution:}\) 考虑区间\([l,r]\)的最优解.显然它可以由\([l+1,r]\)或\([l,r-1]\)转移而来.至此 ...

  5. 硬盘安装Linux

    准备材料:U盘.Linux镜像.UltraISO 1.下载安装UltraISO, 2.打开系统镜像 打开后我们就可以在左边侧栏看到镜像的内容 3.插入U盘,点击:启动->写入光盘映像->选 ...

  6. Python:MySQL数据库环境相关问题

    系统环境 Ubuntu 16.04.2 LTS mysql Ver 14.14 Distrib 5.7.18, for Linux (x86_64) using  EditLine wrapper P ...

  7. 多测师讲解python_函数调用方法__高级讲师肖sir

    (一)函数的介绍  函数:一个工具,随调随用优点:# 降低代码冗余# 增加代码的复用性,提高开发效率# 提高程序扩展性# 函数有两个阶段:定义阶段,调用阶段.# 定义时:只检查函数体内代码语法,不执行 ...

  8. EV加密播放器的分析过程+过虚拟机方法

    开启了OD载入播放器进行分析,发现如下问题:1.播放器会进行翻录检测2.防止虚拟机播放3.视频播放后,可直接对内存操作提取出源视频翻录检测:主要是对指定的文件名或进程名对比虚拟机检测:是针对虚拟机特征 ...

  9. 数据结构&算法的引言&时间复杂度

    什么是计算机科学? 首先明确的一点就是计算机科学不仅仅是对计算机的研究,虽然计算机在科学发展的过程中发挥了重大的作用,但是它只是一个工具,一个没有灵魂的工具而已.所谓的计算机科学实际上是对问题.解决问 ...

  10. 机器分配----线性dp难题(对于我来说)

    题目: 总公司拥有高效设备M台, 准备分给下属的N个分公司.各分公司若获得这些设备,可以为国家提供一定的盈利.问:如何分配这M台设备才能使国家得到的盈利最大?求出最大盈利值.其中M <= 15, ...