Loj2687,jzoj3320-文本编辑器【线头dp】

正题

题目链接:https://loj.ac/problem/2687


题目大意

三个操作:

  1. hhh光标向前移动一格
  2. xxx删除光标处字母
  3. fcf\ cf c移动到下一个字符ccc(算两次操作)

然后fff操作不能对字符eee使用,然后求最少操作次数删除所有的eee


解题思路

线头dpdpdp
fi,jf_{i,j}fi,j表示越过iii一次,然后fff操作是到jjj字符的最小操作次数。
gi,j,kg_{i,j,k}gi,j,k表示越过iii三次,然后在到iii之前的fff操作到jjj字符,在iii之后的fff操作到kkk字符的最小操作次数。

然后动态转移:
fi,j={fi−1,j(j!=si,!needi)fi−1,si+2gi−1,si,j(j!=si)gi−1,si,si+2f_{i,j}=\left\{\begin{matrix} f_{i-1,j}(j!=s_i,!need_i) \\ f_{i-1,s_i}+2 \\ g_{i-1,s_i,j}(j!=s_i) \\ g_{i-1,s_i,s_i}+2 \\\end{matrix}\right.fi,j=fi1,j(j!=si,!needi)fi1,si+2gi1,si,j(j!=si)gi1,si,si+2
gi,j,k={fi−1,j+3(j!=si)fi−1,si+5gi−1,j,k+1(j,k!=si)gi−1,j,si+3(j!=si)gi−1,si,k+3(k!=si)gi−1,si,si+5g_{i,j,k}=\left\{\begin{matrix} f_{i-1,j}+3(j!=s_i) \\ f_{i-1,s_i}+5 \\ g_{i-1,j,k}+1(j,k!=s_i) \\ g_{i-1,j,s_i}+3(j!=s_i) \\ g_{i-1,s_i,k}+3(k!=s_i) \\ g_{i-1,s_i,s_i}+5 \end{matrix}\right.gi,j,k=fi1,j+3(j!=si)fi1,si+5gi1,j,k+1(j,k!=si)gi1,j,si+3(j!=si)gi1,si,k+3(k!=si)gi1,si,si+5

详细的的看这篇dalaoの题解\texttt{dalaoの题解}dalaoの题解&lt;−pleasecheckthere&lt;-please\ check\ there<please check there


codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=70100;
int n,m,ans,s[N],must[N],f[N][11],need=1,g[N][11][11];
void get_min(int &x,int y)
{if(y<x) x=y;}
int main()
{scanf("%d\n",&n);for(int i=1;i<=n;i++){char c;scanf("%c",&c);if(c=='e')ans+=(need=1)*2;else{s[++m]=c-'a';must[m]=need;need=0;}}memset(f,0x3f,sizeof(f));memset(g,0x3f,sizeof(g));f[0][s[1]]=0;for(int i=1;i<=m;i++){for(int j=0;j<11;j++){if(!must[i]&&j!=s[i])get_min(f[i][j],f[i-1][j]);get_min(f[i][j],f[i-1][s[i]]+2);if(j!=s[i])get_min(f[i][j],g[i-1][s[i]][j]);get_min(f[i][j],g[i-1][s[i]][s[i]]+2);for(int k=0;k<11;k++){if(j!=s[i])get_min(g[i][j][k],f[i-1][j]+3);get_min(g[i][j][k],f[i-1][s[i]]+5);if(j!=s[i]&&k!=s[i])get_min(g[i][j][k],g[i-1][j][k]+1);if(j!=s[i])get_min(g[i][j][k],g[i-1][j][s[i]]+3);if(k!=s[i])get_min(g[i][j][k],g[i-1][s[i]][k]+3);get_min(g[i][j][k],g[i-1][s[i]][s[i]]+5);}}}printf("%d",f[m][10]+ans-2);
}

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

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

相关文章

小白带你入坑xamarin系列之环境搭建和准备

序言&#xff1a;移动端的跨平台百花齐放&#xff0c;各种技术方案和方法都是层出不穷。目前xamarin确实是一套成熟可靠&#xff0c;完全值得信赖的开发框架。尤其是对传统做WPF ASP.NET的开发团队来说要节约成本开始移动端开发。这个是很好的一个选项。开始之前回答2个问题。1…

P3402-[模板]可持久化并查集【主席树】

正题 题目链接:https://www.luogu.org/problemnew/show/P3402 题目大意 合并x,yx,yx,y所在的两个集合回到操作kkk之后询问x,yx,yx,y是否在同一个集合 解题思路 正常的并查集&#xff0c;不使用路径压缩&#xff0c;但是使用按秩合并&#xff0c;将深度小的合并到深度大的上面…

Sentinel(十二)之实时监控

转载自 实时监控 Sentinel 提供对所有资源的实时监控。如果需要实时监控&#xff0c;客户端需引入以下依赖&#xff08;以 Maven 为例&#xff09;&#xff1a; <dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-transport-sim…

Dora.Interception,为.NET Core度身打造的AOP框架:全新的版本

Dora.Interception 1.0&#xff08;可以访问GitHub地址&#xff1a;https://github.com/jiangjinnan/Dora&#xff09;推出有一段时间了&#xff0c;最近花了点时间将它升级到2.0&#xff0c;主要有如下的改进&#xff1a;提供了原生的动态代理生成底层框架Dora.DynamicProxy&a…

欢乐纪中某A组赛【2019.7.8】

前言 你以为我是jzojjzojjzoj&#xff0c;其实我是GMojGMojGMoj哒 成绩 JJJ表示初中&#xff0c;HHH表示高中后面加的是几年级 上至222分XJQXJQXJQ,下至200ZZY200ZZY200ZZY都有我们SSLSSLSSL的人(滑稽) |RankRankRank|PersonPersonPerson|ScoreScoreScore|AAA|BBB|CCC| RankR…

Sentinel(十四)之控制台

转载自 Sentinel 控制台 1. 概述 Sentinel 提供一个轻量级的开源控制台&#xff0c;它提供机器发现以及健康情况管理、监控&#xff08;单机和集群&#xff09;&#xff0c;规则管理和推送的功能。这里&#xff0c;我们将会详细讲述如何通过简单的步骤就可以使用这些功能。 …

C# 这些年来受欢迎的特性

原文地址:http://www.dotnetcurry.com/csharp/1411/csharp-favorite-features在写这篇文章的时候&#xff0c;C# 已经有了 17 年的历史了&#xff0c;可以肯定地说它并没有去任何地方。C# 语言团队不断致力于开发新特性&#xff0c;改善开发人员的体验。在这篇文章中&#xff0…

P2657-[SCOI2009]windy数【数位dp,dfs】

正题 题目链接:https://www.luogu.org/problemnew/show/P2657 题目大意 求A∼BA\sim BA∼B中不含前导零且没两个相邻的位数相差至少为222的数字个数。 解题思路 考虑记忆化搜索&#xff0c;用fi,jf_{i,j}fi,j​表示到第iii位数字为jjj时的方案数。 然后用1∼B1\sim B1∼B中…

Sentinel(十三)之动态规则扩展

转载自 动态规则扩展 规则 Sentinel 的理念是开发者只需要关注资源的定义&#xff0c;当资源定义成功后可以动态增加各种流控降级规则。Sentinel 提供两种方式修改规则&#xff1a; 通过 API 直接修改 (loadRules)通过 DataSource 适配不同数据源修改 手动通过 API 修改比较…

AspectCore动态代理中的拦截器详解(一)

前言在上一篇文章使用AspectCore动态代理中&#xff0c;简单说明了AspectCore.DynamicProxy的使用方式&#xff0c;由于介绍的比较浅显&#xff0c;也有不少同学留言询问拦截器的配置&#xff0c;那么在这篇文章中&#xff0c;我们来详细看一下AspectCore中的拦截器使用。两种配…

P3279-[SCOI2013]密码【Manacher】

正题 题目链接:https://www.luogu.org/problemnew/show/P3279 题目大意 一个字符串满足: 有nnn个字符仅包含小写字母告诉你每个字符为中心的最大回文串长度告诉你每个两个字符的间隙为中心的最大回文串长度 求满足要求的字典序最小的字符串。 解题思路 因为字典序最小&…

Actor-ES框架:Ray

并发1. 并发和并行并发&#xff1a;两个或多个任务在同一时间段内运行。关注点在任务分割。并行&#xff1a;两个或多个任务在同一时刻同时运行。关注点在同时执行。本文大多数情况下不会严格区分这两个概念&#xff0c;默认并发就是指并行机制下的并发。2. 好处随着多核处理器…

Sentinel(十五)之在生产环境中使用 Sentinel

转载自 在生产环境中使用 Sentinel 引言 Sentinel 目前已可用于生产环境&#xff0c;除了阿里巴巴以外&#xff0c;也有很多企业在生产环境中广泛使用 Sentinel。 生产环境的 Sentinel Dashboard 需要具备下面几个特性: 规则管理及推送&#xff0c;集中管理和推送规则。se…

P3934-Nephren Ruq Insania【欧拉定理,树状数组】

正题 题目链接:https://www.luogu.org/problemnew/show/P3934 题目大意 长度为nnn的序列aaa 1lrw:1\ l\ r\ w:1 l r w:让l∼rl\sim rl∼r这个区间增加www。2lrp:2\ l\ r\ p:2 l r p:求alal1al2...%pa_l^{a_{l1}^{a_{l2}^{...}}}\% palal1al2...​​​%p直到ara_rar​ 解题思路…

Entity Framework Core 懒加载

众所周知在EF 6 及以前的版本中&#xff0c;是支持懒加载&#xff08;Lazy Loading&#xff09;的&#xff0c;可惜在EF Core 并不支持&#xff0c;必须使用Include方法来支持导航属性的数据加载。不过现在EF Core的开发团队打算恢复对这一功能的支持&#xff08;目前还未发布&…

Sentinel(十六)之AHAS Sentinel 控制台

转载自 AHAS Sentinel 控制台 AHAS Sentinel 是 Sentinel 的阿里云上版本&#xff0c;提供企业级的高可用防护服务&#xff0c;包括&#xff1a; 可靠的实时监控和历史秒级监控数据查询&#xff0c;包含 QPS、RT、load、CPU 使用率等指标&#xff0c;支持按照调用类型分类&a…

和各路巨佬の随机挑战3总结

第三次挑战\huge \texttt{\color{purple}第\color{blue}三\color{green}次\color{block}挑\color{red}战}第三次挑战 规则 随机挑取一蓝一紫一黑来做&#xff0c;拥有两次换题机会&#xff0c;若黑题是暂未学过的算法可以拥有无限次换题机会。 van♂van♂van♂成记录 过程 晚…

浅析Entity Framework Core2.0的日志记录与动态查询条件

一、 Entity Framework Core2.0的日志记录早在Entity Framework Core1.0 ,我们就使用相关的ILoggerProvider ILogger 这些基础接口类.来实现过日志记录.在Entity Framework Core2.0 估计是为了配合ASP.NET Core的日志.所以对这些接口进行了更进一步的包装,也弃用了一些接口和类…

Sentinel(十七)之启动配置项

转载自 启动配置项 配置方式 Sentinel 提供如下的配置方式&#xff1a; JVM -D 参数方式properties 文件方式&#xff08;1.7.0 版本开始支持&#xff09; 其中&#xff0c;project.name 参数只能通过 JVM -D 参数方式配置&#xff08;since 1.8.0 取消该限制&#xff09;&…

jzoj3337-[NOI2013模拟]wyl8899的TLE【字符串hash,二分】

正题 题目大意 两个字符串A,BA,BA,B。可以修改AAA中的一个字符使得AAA中的1∼k1\sim k1∼k是BBB的子串&#xff0c;求kkk的最大值。 解题思路 先将AAA和BBB字符串hashhashhash&#xff0c;然后枚举BBB作为子串的起始位置&#xff0c;然后二分出不修改字符的第一个不相等处xxx…