LightOJ-1013 LCS+递推

LightOJ 立即下载
1013 - Love Calculator
Time Limit: 2 second(s)Memory Limit: 32 MB

Yes, you are developing a 'Love calculator'. The software would be quite complex such that nobody could crack the exact behavior of the software.

So, given two names your software will generate the percentage of their 'love' according to their names. The software requires the following things:

1.                  The length of the shortest string that contains the names as subsequence.

2.                   Total number of unique shortest strings which contain the names as subsequence.

Now your task is to find these parts.

Input

Input starts with an integer T (≤ 125), denoting the number of test cases.

Each of the test cases consists of two lines each containing a name. The names will contain no more than 30 capital letters.

Output

For each of the test cases, you need to print one line of output. The output for each test case starts with the test case number, followed by the shortest length of the string and the number of unique strings that satisfies the given conditions.

You can assume that the number of unique strings will always be less than 263. Look at the sample output for the exact format.

Sample Input

Output for Sample Input

3

USA

USSR

LAILI

MAJNU

SHAHJAHAN

MOMTAJ

Case 1: 5 3

Case 2: 9 40

Case 3: 13 15

 


PROBLEM SETTER: JANE ALAM JAN


题目链接:


题目大意:
  给出两个字符串A、B,求一个包含这两个字符串为子序列的字符串的最小长度,并求出方案数。

解题思路:
  最小长度可以通过求最长公共子序列得到,为len(A)+len(B)-LCS(A,B)。
  难点在于得到方案数,令f[i][j]为取A前i个字符,B前j个字符得到最短字符串的方案数,
则有 dp[i][j-1]>dp[i-1][j]时,f[i][j]=f[i][j-1];
   dp[i][j-1]<dp[i-1][j]时,f[i][j]=f[i-1][j];
   dp[i][j-1]=dp[i-1][j]时,f[i][j]=f[i][j-1]+f[i-1][j]。
  网上还有另一种递推方式,是用f[k][i][j]表示取A前i个字符,B前j个字符构造长度为k的字符串的方案数。 但递推式为
  A[i]==B[j]时,f[k][i][j]=f[k-1][i][j];
  A[i]!=B[j]时,f[k][i][j]=f[k-1][i][j-1]+f[k-1][i-1][j]。
  这样递推对于构造最短串来说方案数是没有问题的,但是非最短串方案数少。
  举例来说,两个字符串AA、DA,f[4][2][2]=0就不正确,但f[3][2][2]=2却是正确的,这是因为f[4][2][2]的上一个状态
f[3][1][1]=0,所以这种递推的定义并不明确。

AC代码:
import java.util.*;

public class Main {
	static int T,n,m,ans;
	static char[] aa,bb;
	static int[][] dp=new int[35][35];
	static long[][] ff=new long[35][35];

	public static void main(String[] args) {
		Scanner in=new Scanner(System.in);
		T=in.nextInt();
		for(int t=1;t<=T;t++)
		{
			aa=(" "+in.next()).toCharArray();
			bb=(" "+in.next()).toCharArray();
			n=aa.length-1;m=bb.length-1;
			for(int i=0;i<=n;i++) ff[i][0]=1;
			for(int i=0;i<=m;i++) ff[0][i]=1;
			for(int i=1;i<=n;i++)
			for(int j=1;j<=m;j++)
			{
				if(aa[i]==bb[j])
				{
					dp[i][j]=dp[i-1][j-1]+1;
					ff[i][j]=ff[i-1][j-1];
				}
				else
				{
					dp[i][j]=Math.max(dp[i-1][j],dp[i][j-1]);
					ff[i][j]=0;
					if(dp[i][j-1]>=dp[i-1][j])
						ff[i][j]+=ff[i][j-1];
					if(dp[i][j-1]<=dp[i-1][j])
						ff[i][j]+=ff[i-1][j];
				}
			}
			ans=n+m-dp[n][m];
			System.out.println("Case "+t+": "+ans+" "+ff[n][m]);
		}
	}
}


从原理到实战:ARS548 4D毫米波雷达数据处理与多模态融合全解析 本文深入解析了4D毫米波雷达ARS548的工作原理与数据处理全流程。从FMCW测距测速、MIMO虚拟天线阵列到点云生成的三步FFT处理,提供了详尽的Python代码实现。文章进一步探讨了与激光雷达、相机的多模态时空对齐与融合策略,并指导如何构建用于自动驾驶感知训练的多模态标注数据集,为相关算法工程师提供了从理论到实践的完整指南。 阅读详情

相关推荐

深度强化学习研究笔记(1)——入门(马尔科夫决策过程,贝尔曼方程,价值迭代和策略迭代)

1. 强化学习(Reinforcement learning)概述 强化学习(Reinforcement learning)的基本内涵是将问题用代理和环境进行建模。其中代理能够对环境执行一些特定的动作a∈Aa \in Aa∈A,从而到达某个状态s∈Ss \in Ss∈S,然后我们就可以根据该状态为代理赋予特定的奖励rrr。强化学习的基本思想如下图所示: 代理的目标是最大化未来的奖励总和,它通过将...

越野者的博客 5280

lightoj(基础数学)

点击题目链接 /***************************************** Author :Crazy_AC(JamesQi) Time :2015 File Name : *****************************************/ // #pragma comment(linker, "/STACK:10240000

KIJamesQi的博客 626

RK3568平台 麦克风PDM接口录音_rk pdm配置

在RK平台,Android的Audio HAL层中一般会都会有导出录音播放数据的功能。如播放的,是会直接送到声卡中的,对于播放出现问题的情况,可以从分析导出的音频数据是否正常,可以基本知道,是在应用、解码出现的问题,还是送到声卡过程中出现问题。当点开app进行录音的时候会调用到static int start_input_stream(struct stream_in *in)。音频在PDM接口输入,不经过编解码芯片直接到RK主芯片,RK主芯片自带PCM编解码功能。以下软件能播放保存下来的pdm文件。

2401_83817122的博客 2344

LightOJ问题教程项目

LightOJ问题教程项目 项目介绍 LightOJ问题教程项目是一个开源项目,旨在为LightOJ的问题提供详细的解题教程。LightOJ是一个在线编程竞赛平台,提供了大量编程问题供程序员解决。本项目通过提供问题解析、算法介绍、代码实现及相关资源链接,帮助编程爱好者更好地理解和解决这些问题。 项目快速启动 以下是快速启动项目的步骤: 克隆项目到本地: git clone https://gi...

gitblog_00812的博客 312

OneNET物联网平台实战:从零搭建到双向数据通信测试

本文提供了一份详细的OneNET物联网平台实战指南,从零开始讲解平台搭建与设备创建,并重点演示了如何通过MQTT协议实现设备数据上报与云端命令下发的双向数据通信测试。通过模拟设备连接与数据交互,帮助开发者快速理解物联网核心通信流程。

weixin_29306571的博客 352

康耐视 VisionPro CogImageFileTool(将获得的图像保存至文件或从文件中获取图像)工具

VisionPro CogImageFileTool(将获得的图像保存至文件或从文件中获取图像)工具

zhihuishuxia__的博客 2065

LightOJ问题教程项目安装与配置指南

LightOJ问题教程项目安装与配置指南 1. 项目基础介绍 LightOJ问题教程项目是一个开源项目,旨在为LightOJ在线判题系统的题目提供详细的解题教程。该项目包含多个题目的解析和代码实现,旨在帮助编程爱好者更好地理解和解决算法问题。项目主要使用Markdown进行文档编写,编程语言以C++为主。 2. 项目使用的关键技术和框架 Markdown:用于编写文档和教程。 C++:主要用于实...

gitblog_00973的博客 810

Linux V4L2驱动开发实战:手把手教你用I2C摄像头Sensor注册一个v4l2_subdev

本文详细解析了Linux V4L2驱动开发中I2C摄像头Sensor注册v4l2_subdev的全流程,包括初始化、操作集填充、异步匹配等关键环节。通过实战案例和代码示例,帮助开发者掌握V4L2子系统下的摄像头驱动开发技巧,提升嵌入式Linux系统开发能力。

weixin_30328063的博客 420

lightOJ 1019 - Brush (V)

挑战上面有模板#include #include #include #include using namespace std; const int MAX_V = 105; const int INF = 0x3f3f3f3f; int V,E; int d[MAX_V]; int used[MAX_V]; int G[MAX_V][MAX_V]; void dijkstra(int

菜鸟 653

(UE5 5.2)HISM Mobile DrawInstance在渲染层的实现浅分析

在 (UE4 4.27) UHierarchicalInstancedStaticMesh(HISM)原理分析 这篇博客大致介绍HISM组件从游戏线程到渲染线程的重建KD-Tree和剔除并提交DrawCall逻辑,但是没有分析渲染层的大致数据结构和实现. 可以看出FHierarchicalStaticMeshSceneProxy 实际存储Instance数组数据来自于FInstancedStaticMeshSceneProxy FHierarchicalStaticMeshSceneProxy只是以FClu

qq_29523119的博客 2725

手把手教你学simulink实例--Simulink在电动汽车故障诊断与预测中的应用仿真

通过上述步骤,我们成功实现了基于Simulink的电动汽车故障诊断与预测仿真。该系统能够全面评估故障诊断与预测算法的性能,验证其在不同故障场景下的有效性,并通过优化设计提高系统的可靠性和安全性。引入智能算法:结合人工智能技术,实现更智能的故障诊断与预测。扩展功能:增加对多种车型和故障类型的支持,提升系统通用性。实验验证:将仿真模型应用于实际硬件,进行实验验证,评估其在实际工况下的表现。

MHD0815的博客 256

LightOj-1067-Lucas定理

现在才看Lucas,真是菜QAQ。 Lucas首先是解决大组合数取模问题的,C(n,m)%p=C(n/p,m/p)*C(n%p,m%p)%p,循环求解这个公式就是Lucas。 #include &lt;iostream&gt; #include &lt;cmath&gt; #include &lt;vector&gt; #include &lt;cstring&gt; #include &l...

alusang的博客 287

解锁PyCharm+Deepseek:本地部署AI编程超能力

在本次探索中,我们成功地在 PyCharm 中实现了 DeepSeek 的本地化部署,这一过程虽然涉及多个步骤,但每一步都为我们开启 AI 编程大门奠定了基础。从安装最新版 PyCharm,确保我们拥有一个功能强大且兼容性良好的开发环境,到注册 DeepSeek 账号并获取 API Key,这是连接我们与强大 AI 能力的关键纽带。接着,在 PyCharm 中安装 Continue 插件并进行精细配置,让 DeepSeek 能够深度融入我们的编程流程。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 5550

LightOJ 1013 - Love Calculator(LCS)

题意:给两个字符串s1和s2,求一个最短的字符串使得s1和s2均为这个字符串的字串,问这个串多长,这样的串有多少个。 思路:显然,串长 = s1和s2的长度和 - LCS(s1,s2)。进行一次dp求出LCS后,再dp一次,求出种数。cnt[i][j]表示s1的前i和s2的前j求得满足对于s1前i和s2前j的串有多少种。显然,当s1[i] == s2[j]时,我们只能以s1[i]这个字符结尾;不

ACMiao的博客 787

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

LightOJ 1013 Love Calculator 【DP(LCS变形)】

题目链接 题意 给两个字符串,求长度最短的字符串的长度以及个数,使得给出的两个串都是这个串的子串。 分析 LCS的变形,首先长度自然是len(s1)+len(s2)-len(LCS)。关键是有多少个这样的字符串。现在知道有两种DP的方法。 题意 给两个字符串,求长度最短的字符串的长度以及个数,使得给出的两个串都是这个串的子串。 分析 L...

babao9492的博客 128

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

☆lightoj1013 Love Calculator 两种转移方程详解(LCS+方案数DP)

1013 - Love Calculator     PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 32 MB Yes, you are developing a 'Love calculator'. The software

K键盘里的青春K 786

Lightoj 1013 DP

AC代码如下: #include #include #include #include #include using namespace std; long long LCM( char a[], char b[] ){ int lengtha = strlen( a ); int lengthb = strlen( b ); int dp[50][50]; memset(

马德里小铁匠的铁匠铺 590

【刷题记录】 LightOJ-1356 Prime Independence 数论+最大独立集

给出n个数字的集合,让你求一个子集,使得自己内任意两个数之间不是素数倍数关系,求这样的最大的子集大小。

这里是阿安的博客 689

lightoj1234——调和级数+欧拉常数

题目链接:http://lightoj.com/volume_showproblem.php?problem=1234 In mathematics, the nth harmonic number is the sum of the reciprocals of the first n natural numbers: In this problem, you are given n...

mumei的博客 550

lightoj 二分题简要题解

1、lightoj 1043  给你yi

Mylover 1208

LightOJ - 1370(欧拉函数)

题意:给定一个序列,对于每一个元素ai,求一个xi使得phi(xi)&gt;=ai,最后将xi求和。分析:由欧拉函数性质可知,当x为素数时,phi(x) = x-1,即x-1&gt;=ai,x&gt;=ai+1。于是只要找到大于等于ai的第一个素数即可。且在任意两个相邻质数x,x+1之间的合数y,有phi(y)&lt;phi(x)&lt;phi(x+1),所以答案不可能是一个合数,就算phi(y)...

GrimCake的博客 682

lightoj Basic Math 数论基础题 1414+1010+1020+1078+1116+1148+1179+1214+1275+1294+1297+1311+1323+1349+1354

//1008 - Fibsieve`s Fantabulous Birthday//1008 #include #include #include #define LL long long int main() { LL T,tt=0; scanf("%lld",&T); while(T--) { LL n,j,k,m,t,i;

冷月之殇 2160

LightOJ ——1282 (简单数论+技巧)

You are given two integers:nandk, your task is to find the most significant three digits, and least significant three digits ofnk. Input Input starts with an integerT (≤ 1000), denoting the num...

lgz0921的博客 612

CF510 Fox And Jumping(扩展欧几里得+最短路)

#include <iostream> #include <algorithm> #include <queue> #include <cstring> #include <cstdio> #include <cmath> #include <map> #include <vector> #include <unordered_map> #include <stack> //#...

CK1513710764的博客 423

lightoj1356——最大独立集+线筛

题目链接:http://lightoj.com/volume_showproblem.php?problem=1356 A set of integers is called prime independent if none of its member is a prime multiple of another member. An integer a is said to be a pri...

mumei的博客 787
上一篇: HDU-4729 树链剖分+主席树
下一篇: LightOJ-1031 博弈 区间DP
AC_Machine
博客等级 码龄11年 1粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值