[SDOI2006]最短距离题解
📅 2026/7/28 20:02:22
👁️ 次浏览
[SDOI2006]最短距离题解——HM题目描述一种EDIT字母编辑器它的功能是可以通过不同的变换操作可以把一个源串X [l..m]变换为新的目标串y[1..n]。EDIT提供的变换操作有源串中的单个字符可被删除(delete)被替换 (replace)被复制到目标串中去(copy)字符也可被插入(insert)源串中的两个相邻字符可进行交换并复制到目标串中去(twiddle)在完成其它所有操作之后源串中余下的全部后缀就可用删至行末的操作删除(kill)。例如将源algorithm转换成目标串altruistic的一种方法是采取下面的操作序列:要达到这个结果还可能有其它一些操作序列。操作delete,replacecopyinserttwiddle和kill中每一个都有一个相联系的代价cost。例如cost(delete)3; cost(replace)6; cost(copy)5; cost(insert)4; cost(twiddle)4; cost(kill)被删除的串长*cost(delete)-1;一个给定的操作序列的代价为序列中各操作代价之和。 例如上述操作序列的代价为3*cost(copy)2*cost(replace)cost(delete)3*cost(insert) cost(twiddle) cost(kill)3*52*633*441*3-148编程任务给定两个序列x[1..m],y[1..n]和一些操作代价集合X到Y的最短距离为将X转化为Y的最小的转换序列的代价。请给出一个算法来找出x[1..m]至y[1..n]的最短距离。输入格式第一行源序列x[1..m]。m200第二行目标序列y[1..n]。(n200)第三行5个正整数100分别是delete 、replace 、copy、 insert、 twiddle的代价。输出格式X到Y的最短距离最小代价和。输入输出样例输入 #1algorithm altruistic 3 6 5 4 4输出 #148题解一道挺考验码力的题。看完题目应该会发现这是一道dp题但dp方程比较复杂因为状态比较多。设我们有dp[i][j]表示初始串操作到第i位目标串完成到第j位则各个操作的状态转移方程为delete:dp[i][j]min(dp[i][j],dp[i-1][j]cost[1])replace:dp[i][j]min(dp[i][j],dp[i-1][j-1]cost[2])copydp[i][j]min(dp[i][j],dp[i-1][j-1]cost[3])insert:dp[i][j]min(dp[i][j],dp[i][j-1]cost[4])twiddle:dp[i][j]min(dp[i][j],dp[i-2][j-2]cost[5])kill:dp[Len1][Len2]min(dp[Len1][Len2],dp[i][Len2]cost[1]*(Len1-i)-1)解释一下delete操作中将初始串第i位的前一位即删除一个字符时加上删除代价便是状态将其与当前状态比较即可。前5个操作都是如此可以理解一下应该比较简单吧。最后一个操作也很好理解因为kill操作优于delete操作(最后-1)当目标串已经完成时进行枚举按照题目要求进行操作即可。大约就这样了注意每个情况的条件与特殊情况即可。附代码#include bits/stdc.h using namespace std; const int SIZE205; const int INF0x3f3f3f3f; #define ll long long char s1[SIZE],s2[SIZE]; int dp[SIZE][SIZE],cost[10]; int Len1,Len2; int main() { // cins1s2; scanf(%s%s,s11,s21); for (int i1;i5;i) scanf(%d,cost[i]); Len1strlen(s11); Len2strlen(s21); memset(dp,INF,sizeof(dp)); if (Len1!0 Len20){ printf(%d,Len1*cost[1]); return 0; } if (Len10 Len2!0){ printf(%d,Len2*cost[4]); return 0; } dp[0][0]0; for (int i1;iLen1;i) dp[i][0]i*cost[1]; for (int i1;iLen2;i) dp[0][i]i*cost[4]; for (int i1;iLen1;i) for (int j1;jLen2;j){ if (s1[i]s2[j]) dp[i][j]min(dp[i][j],dp[i-1][j-1]cost[3]); dp[i][j]min(dp[i][j],min(dp[i-1][j-1]cost[2],min(dp[i-1][j]cost[1],dp[i][j-1]cost[4]))); if (i1 || j1) continue; if (s1[i-1]s2[j] s1[i]s2[j-1]) dp[i][j]min(dp[i][j],dp[i-2][j-2]cost[5]); } for (int i1;iLen1;i) dp[Len1][Len2]min(dp[Len1][Len2],(Len1-i)*cost[1]dp[i][Len2]-1); printf(%d,dp[Len1][Len2]); return 0; }吐槽貌似这题与状态压缩没有太大关系。谢谢观看
1. 项目概述:荧光标记技术中的连接子设计在生物医学研究和分子检测领域,荧光标记技术就像给分子装上"信号灯",而连接子(Linker)就是连接目标分子与荧光染料的"分子桥梁"。这个看似简单的结构&…
📅 2026/7/28 20:02:22
KMS智能激活工具终极指南:3分钟搞定Windows和Office永久激活 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO
还在为Windows系统弹出激活提示而烦恼吗?Office突然变成只读…
📅 2026/7/28 20:02:22
1. 大电池手机的续航革命最近小米新机凭借8500mAh超大电池容量引发热议,官方宣称能实现"两天一充"的续航表现。作为一名长期关注移动设备续航表现的科技博主,我第一时间对这款产品进行了实测。8500mAh的电池容量在当前智能手机市场确实罕见&am…
📅 2026/7/28 20:02:22
1. 问题背景与理解leetcode 1300题"Sum of Mutated Array Closest to Target"是一个典型的算法优化问题。题目要求我们找到一个整数值value,使得将数组中所有大于value的元素替换为value后,数组的和最接近给定的目标值target。如果有多个value…
📅 2026/7/28 21:19:04
1. 项目概述:在线花店管理系统的核心价值去年帮学弟调试他的Python毕业设计时,我意识到一个现象:市面上90%的花店管理系统要么功能过剩,要么交互反人类。这个基于Python的在线花店管理系统恰好填补了学生项目的空白——它用Django…
📅 2026/7/28 21:19:04
1. OpenClaw项目概述OpenClaw是一个基于OpenAI技术栈构建的智能代理框架,因其图标设计酷似小龙虾而被开发者社区昵称为"小龙虾"。这个开源项目本质上是一个多代理协同系统,能够通过自然语言指令完成各类自动化任务,从简单的信息查询…
📅 2026/7/28 21:19:04
1. 项目背景与核心挑战在物联网设备和便携式电子产品中,初级电池(如CR2032纽扣电池)因其体积小、成本低、易于安装等优势被广泛应用。然而这类不可充电电池面临的核心痛点在于:有限的容量与设备日益增长的能耗需求之间的矛盾。特别…
📅 2026/7/28 21:19:04
1. 项目概述:从靶场到实战的桥梁在网络安全的学习路径上,CTF(Capture The Flag)竞赛中的Web题目,尤其是涉及反序列化漏洞的挑战,往往是检验学习者从理论理解迈向实战应用的关键一步。攻防世界(X…
📅 2026/7/28 21:19:04
Project Graph:免费高效的节点图绘制工具完整指南 【免费下载链接】project-graph A node-based visual tool for organizing thoughts and notes in a non-linear way. 项目地址: https://gitcode.com/gh_mirrors/pr/project-graph
你是否曾为复杂的项目关系…
📅 2026/7/28 21:18:04
告别臃肿!3步让你的暗影精灵笔记本重获新生 【免费下载链接】OmenSuperHub Control Omen laptop performance, fan speeds, and keyboard lighting, and unlock power limits. 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub
你是否也曾为官方Om…
📅 2026/7/28 0:00:45
做 RAG 的人应该都踩过这个致命的坑:把几百页的财报、法规、技术手册扔给向量库,问一个具体问题,搜出来的全是沾边但没用的内容 —— 关键信息要么被硬切块拆碎了,要么藏在几十条结果的最下面。语义相似≠真正相关,这个…
📅 2026/7/28 0:00:46
2026年做短视频运营,从抖音上扒文案早就不是偷偷抄笔记的事了。我刚开始做内容的时候,每天刷半小时抖音,手动把爆款视频的口播敲进备忘录,一条2分钟的视频得花十来分钟,碰到语速快的还要反复回听。后来试了一圈工具&am…
📅 2026/7/28 0:00:46
更多请点击:
https://codechina.net
第一章:AI帮助理解数学概念 人工智能正以前所未有的方式重塑数学学习的路径。通过自然语言处理与符号计算的深度融合,AI不仅能解析抽象定义,还能将定理、证明和几何直觉转化为可交互、可验证的…
📅 2026/7/28 1:13:29
1. 项目背景与核心价值去年参与的一个短剧项目让我深刻体会到传统创作流程的痛点:编剧团队花了三周打磨剧本,角色设计反复修改了七版,最后成片时又因为演员档期问题不得不临时调整分镜。这种低效的创作模式在快节奏的内容行业越来越难以为继。…
📅 2026/7/28 1:13:29
remix-i18next TypeScript类型安全实践:确保翻译键与类型定义同步 【免费下载链接】remix-i18next The easiest way to translate your React Router framework mode apps 项目地址: https://gitcode.com/gh_mirrors/re/remix-i18next
在开发多语言应用时&am…
📅 2026/7/28 1:13:29
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/28 7:13:45
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/28 17:14:18
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/28 5:13:40