合并回文子串(区间dp)

news2024/12/25 8:52:25

传送门

输入两个字符串A和B,合并成一个串C,属于A和B的字符在C中顺序保持不变。如"abc"和"xyz"可以被组合成"axbycz"或"abxcyz"等。
我们定义字符串的价值为其最长回文子串的长度(回文串表示从正反两边看完全一致的字符串,如"aba"和"xyyx")。
需要求出所有可能的C中价值最大的字符串,输出这个最大价值即可

输入描述:

第一行一个整数T(T ≤ 50)。
接下来2T行,每两行两个字符串分别代表A,B(|A|,|B| ≤ 50),A,B的字符集为全体小写字母。

输出描述:

对于每组数据输出一行一个整数表示价值最大的C的价值。

示例1

输入

复制2 aa bb a aaaabcaa

2
aa
bb
a
aaaabcaa

输出

复制4 5

4
5

思路:

数据只有50,那么dp数组应该是开3维或者是4维。

假设第一个字符串为a,长度为l,第二个字符串为b,长度为r。

我们设dp[i][j][k][s],即在a串里面选取a[i]a[j],在b串里面选取a[k]a[s]

因为想要为回文串,那么第一个一定是等于最后一个才有希望组成回文串。

那么状态转移方程式就为:

dp[i][j][k][s] |=d[i+1][j-1][k][s](a[i]=a[j],i<j,x<1)

dp[i][j][k][s]|=dp[i][j][k+1][s-1](b[k]=b[s],k<s,y<1)

dp[i][j][k][s]|=dp[i+1][j][k][s-1](a[i]=b[s],i<=j,k<=s)

dp[i][j][k][s]|=dp[i][j-1][k+1][s](a[j]=b[k],i<=j,k<=s)

然后对每个dp[i][j][k][s]=1的取(x+y)的最大值即可。

AC代码:

//
//                                                    ................                                                .................,`..,`.................
//                                                    .....=^..=^..=^.                                                .=^..=^..=^..=^..=^..=^..=^...*.........
//                                            ...*,/\`,/\^,\..,\..,\..,/\`,/\`,/\`...*...*                        ...*,\..,\..,\..,\..,\..,\..,\..=^=^,`,`,`,`
//                                            .,].=^..=^=^,`=^,`=^,`=^=^..=^..=^...,]..,].                        .,].,`=^,`=^,`=^,`=^,`=^,`=^,`=^=^*.........
//                                    .....................,`..,`..,`.....................................        .....,`..,`..,`..,`..,`..,`..,`.
//                                    .=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^.        .=^..=^..=^..=^..=^..=^.........
//                                ,[\^,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,/\`,/\`,\..,\..,\..,\..,\..,\..,`,`
//                                ,/*.,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^=^..=^..,`=^,`=^,`=^,`=^,`=^,`=^....
//                        .............,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..........,`..,`..,`..,`..,`..,`.
//                        .....=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^.........
//                    ...*,/\^,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,`,`
//                    .,].=^=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^....
//                .............,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`.........
//                .=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^.
//            ...*,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,/\`...*...*
//            .,].,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^=^...,]..,].
//        .........,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`.....................................
//        .=^..=^..............................................=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^.....
//    ...*,\..,\...\/`.\/`.\/`.\/`,`,`,`,`,`,`,`,`.\/`.\/`.\/`,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..=/\`,/\`...*
//    .,].,`=^,`=^.[,`.[,`.[,`.[,`.................[,`.[,`.[,`,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^=^=^=^...,].
//        .,`..,`.                                            .,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`.................
//        ........                                            .............................=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^.....
//                                                                        ,`,`,`,`.\/`.\/`,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..=^..
//                                                                        .........[,`.[,`,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^=^..
//                                                                                    .....,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`.....
//                                                                                    .=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^.
//                                                                                ,[\^,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..
//                                                                                ,/*.,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^
//                                                                            .........,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`.
//                                                                            .=^..=^..=^..=^..=^..=^..=^..=^.. ...........=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^..=^.
//                                                                        ...*,\..,\..,\..,\..,\..,\..,\..,\..=^=^.\/`.\/`,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..
//                                                                        .,].,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^=^*..[,`.[,`,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^
//                                                                    .........,`..,`..,`..,`..,`..,`..,`..,`.            .,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`..,`.
//                                                                    .....=^..=^..=^..=^..=^..=^..=^.........            .............................................=^..=^..=^..=^..=^.
//                                                                    ,/\^,\..,\..,\..,\..,\..,\..,\..,`,`                                                        .@=^,\..,\..,\..,\..,\..
//                                                                    =^=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^....                                                        ,[\/,`=^,`=^,`=^,`=^,`=^
//                                                                .........,`..,`..,`..,`..,`..,`..,`.                                                                .,`..,`..,`..,`..,`.
//                                                                .=^..=^..=^..=^..=^..=^..=^..=^..=^.                                                                .=^..=^..=^.. ......
//                                                            ,[\^,\..,\..,\..,\..,\..,\..,\..,\..,\..                                                                ,\..,\..,\..=^=^,`,`
//                                                            ,/*.,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^                                                                ,`=^,`=^,`=^=^*.....
//                                                        .........,`..,`..,`..,`..,`..,`..,`..,`..,`*                                                                .,`..,`..,`.
//                                                        .....=^..=^..=^..=^..=^..=^..=^..=^..=^....*                                                                .=^.. ......
//                                                        ,/\^,\..,\..,\..,\..,\..,\..,\..,\..,\..=^..                                                                ,\..=^=^,`,`
//                                                        =^=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^=^..                                                                ,`=^=^*.....
//                                                        .....,`..,`..,`..,`..,`..,`..,`..,`..,`....*                                                                .,`.
//                                                        .=^..=^..=^..=^..=^..=^..=^..=^..=^..=^...*.                                                                ....
//                                                        ,\..,\..,\..,\..,\..,\..,\..,\..,\..,\..=^..
//                                                        ,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^=^..
//                                                        .,`..,`..,`..,`..,`..,`..,`..,`..,`..,`.....
//                                                        .........=^..=^..=^..=^..=^..=^..=^..=^.....
//                                                            .\/`,\..,\..,\..,\..,\..,\..,\..,\..,`,`
//                                                            .[,`,`=^,`=^,`=^,`=^,`=^,`=^,`=^,`=^....
//                                                                .,`..,`..,`..,`..,`..,`..,`..,`.
//                                                                ................................
//                                                                    ,`,`.\/`.\/`.\/`,`,`,`,`
//   
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e6+10;
char a[N],b[N];
int dp[51][51][51][51];
const int INF=1e9;
void solve(){
	memset(dp,0,sizeof(dp));
	cin>>a;
	cin>>b;
	int l=strlen(a);
	int r=strlen(b);
	int maxl=0;
	for(int x=0;x<=l;x++){
		for(int y=0;y<=r;y++){
			for(int j=x,i=1;j<=l;i++,j++){
				for(int k=1,s=y;s<=r;s++,k++){
					if(x+y<=1) dp[i][j][k][s]=1;
					else {
						if(a[i-1]==a[j-1]&&x>1){
							dp[i][j][k][s]|=dp[i+1][j-1][k][s];
						}
						if(b[k-1]==b[s-1]&&y>1){
							dp[i][j][k][s]|=dp[i][j][k+1][s-1];
						}
						if(x&&y){
							if(a[i-1]==b[s-1]){
								dp[i][j][k][s]|=dp[i+1][j][k][s-1];
							}
							if(a[j-1]==b[k-1]){
								dp[i][j][k][s]|=dp[i][j-1][k+1][s];
							}
						}
					}
					if(dp[i][j][k][s]){
						maxl=max(maxl,x+y);			
					}					
				}
			}
		}
	}
	cout<<maxl<<'\n';
}
signed main(){
	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	int t=1;
	cin>>t;
	while(t--){
		solve();
	}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/717849.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Dlib —— 对视频流进行人脸识别(附C++源码)

照片效果 视频效果 注意&#xff1a;Dlib检测人脸在Release版耗时与CPU有关,本人I7 10代约100ms左右&#xff0c;这里本人将人脸检测用Yolov5对人脸简单抠图训练后 使用yolov5推理检测人脸&#xff0c;之后将检测到的人脸输入给Dlib做特征&#xff0c;发现人脸特征部分耗时也较…

androidx.appcompat.widget.SearchView怎么改搜索框提交按钮

searchView.isSubmitButtonEnabled true&#xff0c;运动后如下图&#xff1a; 怎么改搜索框提交按钮&#xff0c;按下图操作&#xff1a; 或者 打开SearchView进入看&#xff0c;一样 搜索框提交按钮改好了&#xff0c;如下图&#xff1a;

SparkSQL的数据结构DataFrame构建方式(Python语言)

SparkSQL 是Spark的一个模块, 用于处理海量结构化数据&#xff0c;其提供了两个操作SparkSQL的抽象&#xff0c;分别是DataFrame和DataSet&#xff0c;spark2.0之后&#xff0c;统一了DataSet和DataFrame&#xff0c;以后只有DataSet。 以Python、R语言开发Spark&#xff0c;使…

BurpSutie拓展插件推荐-原始模块增强插件

为方便您的阅读&#xff0c;可点击下方蓝色字体&#xff0c;进行跳转↓↓↓ 01 Logger&#xff08;1&#xff09;工具介绍&#xff08;2&#xff09;下载地址&#xff08;3&#xff09;使用说明 02 HAE&#xff08;1&#xff09;工具介绍&#xff08;2&#xff09;下载地址&…

【C语言static关键字】

C语言static关键字 C语言之static1、什么是static&#xff1f;2、static的意义3、C/C static的属性4、static的用法4.1、static修饰局部变量例程4.2、static修饰全局变量例程4.3、static修饰函数例程 5、结束语 C语言之static 前言&#xff1a; 先简单了解下“三大区”&#x…

数据人一直做这四项工作,即使不被BI、AI取代,也躲不过35危机!

先说我的观点&#xff1a;数据分析职业不会被BI软件替代。顺便说一句&#xff0c;数据分析职业也不会被chatgpt取代。 大家首先要搞清楚&#xff1a;取代人的从来不是工具&#xff0c;而是会使用工具的人。 数据分析师工作内容 首先&#xff0c;先让我们来全面拆解一下国内数…

聊聊极限编程与测试启发

这是鼎叔的第六十五篇原创文章。行业大牛和刚毕业的小白&#xff0c;都可以进来聊聊。 欢迎关注本公众号《敏捷测试转型》&#xff0c;星标收藏&#xff0c;大量原创思考文章陆续推出。 继续聊聊著名的敏捷研发框架&#xff1a;极限编程。 极限编程&#xff08;Extreme Prog…

从腾讯、阿里、联想的ESG报告,看数字企业发展的「碳门槛」

从“互联网”到“数字化”&#xff0c;再到“ESG”。数字化不仅帮助企业打开了从传统到现代化的通路&#xff0c;也帮助企业打开了从无序到环保、通往低碳的大门。 作者|斗斗 编辑|皮爷 出品|产业家 一年一度的ESG报告披露正在来临。 腾讯发布2022年ESG&#xff08;即“…

一天掌握latex论文编辑,从标题作者,段落,数学公式,图片,图表,到参考文献全流程

目录 以下是一个基于SCI模板的完整LaTeX论文示例&#xff0c;包含注释说明 1. 创建文档&#xff1a; 2. 标题和作者信息&#xff1a; 3. 段落和文本格式&#xff1a; 4. 列表&#xff1a; 5.图片和表格&#xff1a; 5.1插入图片 5.2 插入表格 5.2.1 示例1 &#xff1a;…

计算机组成原理基础复习题(无答案版)

本套题无答案&#xff0c;整理出来适合大家完成课堂学习后&#xff0c;边翻书边对照题目检索答案&#xff0c;加深印象。 目录 一、选择题 二、填空题 三、简答题 四、设计题 一、选择题 1、完整的计算机系统应包括&#xff08; &#xff09;。 A. 运算器、存储器和控制器…

【C#】医学检验系统(LIS)源码

一、医学检验系统&#xff08;Laboratory Information Management System 简称&#xff1a;LIS&#xff09;LIS是HIS系统的一个重要的组成部分&#xff0c;其主要功能是将检验的实验仪器传出的检验数据经分析后&#xff0c;生成检验报告&#xff0c;通过网络存储在数据库中&…

《操作系统》- 线程与进程

目录 一、进程的概念二、进程的结构和特征2.1 进程的结构2.2 进程的特征 三、线程的概念四、进程和线程比较五、线程的实现方式 一、进程的概念 程序放在磁盘上不叫做进程&#xff0c;只有运行起来之后才叫做进程&#xff0c;进程进程就是进行中的程序&#xff01;一次运行就会…

spring boot security使用jwt认证

前言 在前面的几篇文章中&#xff1a; spring boot security快速使用示例 spring boot security之前后端分离配置 spring boot security自定义认证 spring boot security验证码登录示例 基本对常用的基于cookie和session的认证使用场景都已覆盖。但是session属于有状态认证&am…

GAMES101笔记 Lecture10 Geometry1 (Introduction)

目录 Application for Texture(纹理的应用)Environment Map(环境光贴图)Spherical Environment Map(球形环境光贴图)Cube Map(立方体贴图) Texture can affect shading!(纹理可以作用于着色)How to perturb the normal (in flatland)(如何计算法线如何变化呢&#xff1f;)Displ…

《AutoSar实战》读写DID之三:代码实现

文章目录 前言一、检查生成的接口以及数据类型1. 读DID函数接口生成2. 写DID函数接口生成3. 写NvM接口生成4. RAM数组生成 二、代码编写1. 读DID2. 写DID 总结 前言 本系列主要基于DaVinCi工具链来展开具体DID读写的配置以及最终实现。 DID读写功能实现流程包括如下几点&#…

行走江湖,一最多的行

本篇博客会讲解力扣“2643. 一最多的行”的解题思路&#xff0c;这是题目链接。 本题的思路是&#xff1a;从上到下遍历二维数组&#xff0c;统计每一行1的个数。使用ret数组的第一个元素维护1最多的行的下标&#xff0c;第二个元素维护最多的1的个数。若发现某一行的1的个数比…

kettle取昨天时间设置任意时间变量

文章目录 kettle取昨天时间&设置任意时间变量设置系统信息增加常量计算器设置变量 总结 kettle取昨天时间&设置任意时间变量 kettle 版本7.1&#xff0c;如下图所示&#xff1a; 所需要组件&#xff1a;1 获取系统信息; 2 增加常量; 3 计算器; 4设置变量 结果可以用于…

yolov8源码解读(part2: 检测,分割)

本文解读下图框中的detection部分 和 没有画出来的分割部分。 注意每个模块右上角的数字,它代表第几个模块, 现在检测和分割的输入都是15, 18, 21个模块的输出(图中圆圈处)。 在代码解读的时候会用[15,18,21]提示需要用到15, 18, 21个模块的输出。 yolov8的实例分割用了y…

Pandas包构建DataFrame的几种方式

1. Pandas Pandas是python的一个第三方包&#xff0c;是一个结构化数据工具集&#xff0c;能够更加灵活、快速的对数据进行清洗和处理&#xff0c;适用于单击大数据量的数据分析和数据开发 使用pandas包之前&#xff0c;首先安装 pip install -i https://pypi.tuna.tsinghua.…