CF#358 D. Alyona and Strings DP
D. Alyona and Strings
题意
给出两个字符串s,t,让找出最长的k个在s,t不相交的公共子串。
思路
看了好几个题解才搞懂。
代码中有注释
代码
#include<bits/stdc++.h>
#define pb push_back
using namespace std;
typedef long long ll;
const int N=1e5+10;
const int mod=1e9+7;
const int inf=0x3f3f3f3f;
char s[N],t[N],k;
int dp[1010][1010][11][2];
/*
终于搞明白了
dp[i][j][k][0]表示的是s的前i个字符,t的前j个字符,选择k个公共子串的最大值(不一定包括i,j)
dp[i][j][k][1]表示的是s的前i个字符,t的前j个字符,选择k个公共子串最后是i,j的最大值
dp[lens][lent][k][0]就是题目要求的答案。
当s[i]==t[j]的时候dp[i][j][k][1]才存在(不为0)
*/
int main()
{
    int lens,lent;
    scanf("%d%d%d%s%s",&lens,&lent,&k,s+1,t+1);
    for(int i=1; i<=lens; i++)
    {
        for(int j=1; j<=lent; j++)
        {
            for(int l=1; l<=k; l++)
            {
                if(s[i]==t[j])//只有s[i]==t[j]的时候才有dp[i][j][l][1]
                    dp[i][j][l][1]=max(dp[i-1][j-1][l][1]+1,dp[i-1][j-1][l-1][0]+1);
                /*可以沿用之前的第l个公共子串,或者让i,j作为第l个子串的第一位*/
                dp[i][j][l][0]=max(dp[i-1][j][l][0],max(dp[i][j-1][l][0],dp[i][j][l][1]));
            }
        }
    }
    printf("%d\n",dp[lens][lent][k][0]);
    return 0;
}
/*
*/
CF#358 D. Alyona and Strings DP的更多相关文章
- Codeforces Round #358 (Div. 2) D. Alyona and Strings dp
		D. Alyona and Strings 题目连接: http://www.codeforces.com/contest/682/problem/D Description After return ... 
- codeforces 682D D. Alyona and Strings(dp)
		题目链接: D. Alyona and Strings time limit per test 2 seconds memory limit per test 256 megabytes input ... 
- Codeforces 682 D. Alyona and Strings (dp)
		题目链接:http://codeforces.com/contest/682/problem/D 给你两个字符串,求两个字符串中顺序k个的相同子串 长度之和.(注意是子串) dp[i][j][k][0 ... 
- Codeforces Round #358 (Div. 2) D. Alyona and Strings 字符串dp
		题目链接: 题目 D. Alyona and Strings time limit per test2 seconds memory limit per test256 megabytes input ... 
- CodeForces 682D  Alyona and Strings (四维DP)
		Alyona and Strings 题目链接: http://acm.hust.edu.cn/vjudge/contest/121333#problem/D Description After re ... 
- D. Alyona and Strings 解析(思維、DP)
		Codeforce 682 D. Alyona and Strings 解析(思維.DP) 今天我們來看看CF682D 題目連結 題目 略,請直接看原題. 前言 a @copyright petjel ... 
- Codeforces 682D Alyona and Strings(DP)
		题目大概说给两个字符串s和t,然后要求一个包含k个字符串的序列,而这个序列是两个字符串的公共子序列,问这个序列包含的字符串的总长最多是多少. 如果用DP解,考虑到问题的规模,自然这么表示状态: dp[ ... 
- 【31.58%】【codeforces 682D】Alyona and Strings
		time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ... 
- CF #374 (Div. 2)    C.  Journey      dp
		1.CF #374 (Div. 2) C. Journey 2.总结:好题,这一道题,WA,MLE,TLE,RE,各种姿势都来了一遍.. 3.题意:有向无环图,找出第1个点到第n个点的一条路径 ... 
随机推荐
- M - Help Hanzo LightOJ - 1197 (大区间素数筛法)
			题解:素数区间问题.注意到a和b的范围是1<<31,所以直接暴力打表肯定不可以.如果一个数是合数,他的两个因子要么是两个sqrt(x),要么就分布在sqrt(x)两端,所以我们可以根据sq ... 
- jQuer实时监控input对table进行筛选
			记得以前写过一个预定表格~~~~~比这个更难,一大串前端js~~~忘了~~~好记性不如烂笔头~~记录下,既帮助别人,也帮助自己~~~ 实现思路~通过.on监听input标签的内容变化,通过this获取 ... 
- JavaScript的运行机制!!!很重要很重要!!!!!!请看大神操作!
			https://juejin.im/post/59e85eebf265da430d571f89 
- js的localStorage基础认识
			新建a.html文件: <!DOCTYPE html> <html> <body> <div id="result"></di ... 
- [PHP][thinkphp5] 学习一:增删改查
			<?php namespace app\index\controller; use think\Controller; use think\Db; class Test extends Cont ... 
- Maven+JSP+SSM+Mysql+C3P0实现的学生管理系统
			项目简介 项目来源于:https://gitee.com/wu_yun_long/student_management_system 本系统是基于Maven+JSP+SSM+Mysql+C3P0实现的 ... 
- Calendar日历类
			package com.yhqtv.demo02.ThreadPool; import java.util.Calendar; import java.util.Date; /* * java.uti ... 
- 从源码解读Spring如何解决bean循环依赖
			1 什么是bean的循环依赖 循环依赖的原文是circular reference,指多个对象相互引用,形成一个闭环. 以两个对象的循环依赖为例: Spring中的循环依赖有 3 种情况: 构造器(c ... 
- chrome Provisional headers are shown错误提示(转载)
			今天开发时遇到了一个问题,由于要做一个支付等待页,大概的意思就是点击支付之后,跳出来一个页面,告知用户正在跳转到支付页面.这个时候问题来了,指鹤要做的这个静态支付等待页中有图片,而为了要让这个静态页面 ... 
- 全球数字高程数据(DEM)详解,还有地形晕渲、等高线等干货
			1 基本概念 DEM是数字高程模型的英文简称(Digital Elevation Model),是研究分析地形.流域.地物识别的重要原始资料.由于DEM 数据能够反映一定分辨率的局部地形特征,因此通过 ... 
