【2014广州市选day1】JZOJ2020年9月12日提高B组T4 字符串距离
【2014广州市选day1】JZOJ2020年9月12日提高B组T4 字符串距离
题目
Description
给出两个由小写字母组成的字符串 X 和Y ,我们需要算出两个字符串的距离,定义如下:
1)我们可以在字符串的头、尾、中间插入若干空格,组成一个新的扩展串
2)对X扩展成扩展串X1,对Y扩展成扩展串Y1,并且令X1和Y1具有相同的长度
3)定义X1、Y1的距离为每个对应的字符的距离之和,其中两个空格的距离为0,两个非空格字符的距离为其ASCII码之差的绝对值,一个空格字符到任意非空格字符的距离为K
4)对于字符串X、Y,必然存在两个等长的扩展串X1、Y1,使得X1、Y1的距离达到最少,我们将这一距离定义为字符串X、Y的距离
Input
输入为三行,前两行是30位以内的由小写字母组成的字符串, 第三行是整数K(0<=K<=30)
Output
输出一行为一个整数,代表两个字符串的距离
Sample Input
cmo
snmn
2
Sample Output
7
题解
题意
给出两个字符串和字符串距离的定义
求这两个字符串的最短距离
分析
考虑\(DP\)
设\(f[i][j]\)为第一个字符串到了第\(i\)个位置,第二个字符串到了第\(j\)个位置
初始化:
\(f[i][0]=i*k,f[0][i]=k*i\)
那么就有
\(f[i][j]=min\begin{cases}f[i-1][j-1]+abs(a[i]-b[j])\\f[i-1][j]+k\\f[i][j-1]+k\end{cases}\)
Code
#include<bits/stdc++.h>
using namespace std;
int l1,l2,k,a[35],c[35],f[35][35];
char ch;
int main()
{
freopen("distance.in","r",stdin);
freopen("distance.out","w",stdout);
ch=getchar();
while (ch<'a'||ch>'z') ch=getchar();
while (ch>='a'&&ch<='z')
{
a[++l1]=ch-'a'+1;
ch=getchar();
}
while (ch<'a'||ch>'z') ch=getchar();
while (ch>='a'&&ch<='z')
{
c[++l2]=ch-'a'+1;
ch=getchar();
}
while (ch<'0'||ch>'9') ch=getchar();
while (ch>='0'&&ch<='9')
{
k=(k<<1)+(k<<3)+(ch-'0');
ch=getchar();
}
for (int i=1;i<=l1;++i)
f[i][0]=k*i;
for (int i=1;i<=l2;++i)
f[0][i]=k*i;
for (int i=1;i<=l1;++i)
for (int j=1;j<=l2;++j)
f[i][j]=min(f[i-1][j-1]+abs(a[i]-c[j]),min(f[i-1][j],f[i][j-1])+k);
printf("%d\n",f[l1][l2]);
fclose(stdin);fclose(stdout);
return 0;
}
【2014广州市选day1】JZOJ2020年9月12日提高B组T4 字符串距离的更多相关文章
- 【2014广州市选day1】JZOJ2020年9月12日提高B组T3 消除游戏
[2014广州市选day1]JZOJ2020年9月12日提高B组T3 消除游戏 题目 Description 相信大家玩过很多网络上的消除类型的游戏,一般来说就是在一个大拼图内找出相同的部分进行最大程 ...
- 【2014广州市选day1】JZOJ2020年9月12日提高B组T2 导弹拦截
[2014广州市选day1]JZOJ2020年9月12日提高B组T2 导弹拦截 题目 Description 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统 V1.0.但是这种导弹拦截系统有一个缺 ...
- 【Usaco 2009 Gold】JZOJ2020年9月19日提高B组T4 过路费
[Usaco 2009 Gold]JZOJ2020年9月19日提高B组T4 过路费 题目 Description 跟所有人一样,农夫约翰以着宁教我负天下牛,休叫天下牛负我的伟大精神,日日夜夜苦思生财之 ...
- JZOJ2020年9月12日提高B组反思
CSP第1轮倒计时:29天 JZOJ2020年9月12日提高B组反思 T1 放在T1却是最难的一题 明显需要高精度 但是我小学奥数没学好,不知道怎么把正有理数转化成分数 T2 明显的DP 可惜的是我文 ...
- 【五校联考1day2】JZOJ2020年8月12日提高组T2 我想大声告诉你
[五校联考1day2]JZOJ2020年8月12日提高组T2 我想大声告诉你 题目 Description 因为小Y 是知名的白富美,所以自然也有很多的追求者,这一天这些追求者打算进行一次游戏来踢出一 ...
- 【Usaco 2009 Gold】JZOJ2020年9月19日提高B组T3 头晕的奶牛
[Usaco 2009 Gold]JZOJ2020年9月19日提高B组T3 头晕的奶牛 题目 Description 奶牛们发现,在农场里面赛跑是很有趣的一件事.可是她们一旦在农场里面不断地转圈,就会 ...
- 【Usaco 2009 Gold 】JZOJ2020年9月19日提高B组T2 电视游戏问题
[Usaco 2009 Gold ]JZOJ2020年9月19日提高B组T2 电视游戏问题 题目 Description 农夫约翰的奶牛们游戏成瘾!本来FJ是想要按照陶叫兽的做法拿她们去电击戒瘾的,可 ...
- 【Usaco 2009 Silver】JZOJ2020年9月19日提高B组T1 音乐节拍
[Usaco 2009 Silver]JZOJ2020年9月19日提高B组T1 音乐节拍 题目 Description FJ准备教他的奶牛弹奏一首歌曲,歌曲由N(1<=N<=50,000) ...
- JZOJ2020年9月19日提高B组反思
CSP第一轮倒计时:22天 JZOJ2020年9月19日提高B组反思 今天比的不好,只有签到题过了 130,rank 20 T1 签到题 用二分直接切 AC 100 T2 觉得是依赖背包问题 但是我没 ...
随机推荐
- How to using expression setup BackgroundColor AX2012 SSRS Report[AX2012]
tile label using [#99ccff] property BackgroundColor - > expression =Iif(Fields!Flag.Value = " ...
- 服务器性能监控神器nmon使用介绍
介绍 Nmon (Nigel's Monitor)是由IBM 提供.免费监控 AIX 系统与 Linux 系统资源的工具.该工具可将服务器系统资源耗用情况收集起来并输出一个特定的文件,并可利用 exc ...
- js 图片放大镜功能
原理:放置两张相同的图片,一张作为主图片(图片1),另一张作为用来裁剪并放大的图片(图片2) 鼠标移动时,计算鼠标在图片1的位置(距离图片1左上角的x,y距离),以此决定在图片2开始 ...
- MYSQL字段
这里我的测试环境是wampserver 选择数据库 选择表 或者创建数据库和表 SHOW DATABASES; 查看数据库 CREATE DATABASE 数据库名; 创建数据库 在 MySQL 中, ...
- Linux sar命令参数详解
转载自http://www.chinaz.com/server/2013/0401/297942.shtml sar(System Activity Reporter系统活动情况报告)是目前 Linu ...
- 监控-Cat项目部署
一.Cat的项目背景 CAT(Central Application Tracking),是美团点评基于 Java 开发的一套开源的分布式实时监控系统.美团点评基础架构部希望在基础存储.高性能通信.大 ...
- 14Flask重要知识
一,李辉<Flask Web开发实战> 1,内网穿透 内网穿透工具可以快速让flask项目运行: 1,https://localtunnel.github.io/www/ 2,https: ...
- Java 内功修炼 之 数据结构与算法(二)
一.二叉树补充.多叉树 1.二叉树(非递归实现遍历) (1)前提 前面一篇介绍了 二叉树.顺序二叉树.线索二叉树.哈夫曼树等树结构. 可参考:https://www.cnblogs.com/l-y-h ...
- 《GNU_Makefile》——第3章,Makefile总述
1.makefile的内容 一个完整的makefile包含5个东西: 显示规则,隐含规则,变量定义,指示符,注释 (1)显示规则 描述如何更新目标文件. (2)隐含规则 make程序内置的规则. ma ...
- ceph bluestore的db分区应该预留多大的空间
前言 关于bluestore的db应该预留多少空间,网上有很多资料 如果采用默认的 write_buffer_size=268435456 大小的话 那么几个rocksdb的数据等级是 L0: in ...