每日一题 day24 打卡

Analysis

字符串+dp

仔细观察发现,对于f[i][j],它的值为以下三个值中的最小者:

  1. f[i-1][j]+k //a[i]对应空格
  2. f[i][j-1]+k //b[j]对应空格
  3. f[i-1][j-1]+abs(a[i-1]-b[j-1])// a[i]对应b[j] 我们就得出了动态转移方程,而最终答案就在f[a的长度][b的长度]里。

除此之外,只需注意初始化即可。

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define int long long
#define maxn 2000+10
using namespace std;
inline int read()
{
int x=;
bool f=;
char c=getchar();
for(; !isdigit(c); c=getchar()) if(c=='-') f=;
for(; isdigit(c); c=getchar()) x=(x<<)+(x<<)+c-'';
if(f) return x;
return -x;
}
inline void write(int x)
{
if(x<){putchar('-');x=-x;}
if(x>)write(x/);
putchar(x%+'');
}
char a[maxn],b[maxn];
int k,lena=,lenb=;
int dp[maxn][maxn];
inline int min_four(int x,int y,int z,int o)
{
return min(min(x,y),min(z,o));
}
inline int fig(char x,char y)
{
int nx=x-'',ny=y-'';
return abs(nx-ny);
}
signed main()
{
memset(dp,,sizeof(dp));
while()
{
int in=getchar();
if(in=='\n')
{
lena--;
break;
}
a[lena]=in;
lena++;
}
while()
{
int in=getchar();
if(in=='\n')
{
lenb--;
break;
}
b[lenb]=in;
lenb++;
}
k=read();
dp[][]=;
for(int i=;i<=lena;i++) dp[i][]=dp[i-][]+k;
for(int i=;i<=lenb;i++) dp[][i]=dp[][i-]+k;
for(int i=;i<=lena;i++)
for(int j=;j<=lenb;j++)
{
dp[i][j]=min_four(dp[i][j],dp[i-][j]+k,dp[i][j-]+k,dp[i-][j-]+fig(a[i],b[j]));
}
write(dp[lena][lenb]);
return ;
}

请各位大佬斧正(反正我不认识斧正是什么意思)

洛谷 P1279 字串距离 题解的更多相关文章

  1. 洛谷P1279 字串距离

    题目描述 设有字符串X,我们称在X的头尾及中间插入任意多个空格后构成的新字符串为X的扩展串,如字符串X为”abcbcd”,则字符串“abcb□cd”,“□a□bcbcd□”和“abcb□cd□”都是X ...

  2. 洛谷 P1032 字串变换题解

    题目链接:https://www.luogu.org/problem/P1032 题目描述 已知有两个字串A,BA,B及一组字串变换的规则(至多66个规则): A_1A1​ ->B_1B1​ A ...

  3. 洛谷 P1032 字串变换 题解

    每日一题 day19 打卡 Analysis 广搜+map判重 用find寻找字串,再用replace替换字串 这里的map相当于正常广搜的一个book的作用 #include<iostream ...

  4. 洛谷P1032 字串变换-题解

    https://www.luogu.org/problemnew/show/P1032--(题目传送) 好在数据范围很小,暴力一点也能过.思路较简单,按照所有规则,从第一位开始广搜. 注意:1.str ...

  5. P1279 字串距离

    P1279 字串距离一看就是字符串dp,然而并不会,骗分之后爆零了.以后dp题要好好想想转移方程.f[i][j]表示是a串选了前i个字符,b串选了前j个字符的距离.显然(QAQ)f[i][j]=min ...

  6. [洛谷P1032] 字串变换

    洛谷题目链接:字串变换 题目描述 已知有两个字串 A, B 及一组字串变换的规则(至多6个规则): A1 -> B1 A2 -> B2 规则的含义为:在 A$中的子串 A1 可以变换为 B ...

  7. 洛谷 P1032 字串变换

    题目描述 已知有两个字串 A, B 及一组字串变换的规则(至多6个规则): A1 -> B1 A2 -> B2 规则的含义为:在 A$中的子串 A1 可以变换为 B1.A2 可以变换为 B ...

  8. 洛谷 P1032 字串变换 (BFS)

    题目传送门 我即使是死了,钉在棺材里了,也要在墓里,用这腐朽的声带喊出 STL大法好 这题最麻烦的其实是处理字符串,真正的搜索部分我个人认为也就只有橙题或黄题的难度.而处理字符串,正如前面所说,STL ...

  9. P1279 字串距离 dp 洛谷

    题目描述 设有字符串X,我们称在X的头尾及中间插入任意多个空格后构成的新字符串为X的扩展串,如字符串X为”abcbcd”,则字符串“abcb□cd”,“□a□bcbcd□”和“abcb□cd□”都是X ...

随机推荐

  1. Fedora30 - Xrdp 远程桌面

    Windows RDP 访问 Fedor 远程桌面需要使用 Xrdp 开源工具. [lipandeng@localhost ~]$ sudo dnf install xrdp [lipandeng@l ...

  2. 【转】使用Dockerfile构建镜像并push到私有仓库

    环境:OS X 10.10.5 maven 3.3.9 Docker version 1.12.2 docker-machine version 0.8.2 程序示例为http://www.cnblo ...

  3. 搭建SpriBoot开发环境

      一.搭建springboot开发环境 需求:使用springboot搭建一个项目,编写一个controller控制器,使用浏览器正常访问 springboot1.x版本--> 基于sprin ...

  4. [SOLVED] “Error 1067: The process terminated unexpectedly” on Windows 10, 7 & 8

    Windows background services enable Windows features function properly. If some errors happen to serv ...

  5. vue页面跳转

    一.在template中的常见写法: <router-link to="/recommend"> <button class="button" ...

  6. Core Animation笔记(特殊图层)

    1.shapeLayer: 渲染快速,内存占用小,不会被图层边界裁掉(可以在边界之外绘制),不会像素化(当做3D变化如缩放是不会失真) CGRect rect = self.containerView ...

  7. 操作系统systemctl命令

    目录 预热 管理单个 unit 查看系统上的 unit 管理不同的操作环境(target unit) 检查 unit 之间的依赖性 相关的目录和文件 systemctl daemon-reload 子 ...

  8. python(open文件读取)

    一.open文件读取 1.open('file','mode')打开一个文件 file 要打开的文件名,需加路径(除非是在当前目录) mode 文件打开的模式 需要手动关闭close 2.with o ...

  9. 【JUC】5.线程池—Executor

    创建线程池可以分为三种方式: 1. 通过ThreadPoolExecutor的构造方法,创建ThreadPoolExecutor的对象,即一个线程池对象: 此构造方法,一共7个参数,5个必须参数,2个 ...

  10. Scrapy 概览笔记

    本项目代码可参考 imzhizi/myspider: a scrapy demo with elasticsearch 虚拟环境的创建 建议爬虫项目都创建虚拟环境 虚拟环境在 Python 项目中真的 ...