题解 [ARC081E] Don't Be a Subsequence
子序列自动机是什么?广搜又是什么?
这不是一个很显然的动态规划吗。
题意
参见题意翻译。
分析
设
设字符
具体实现是容易的,详见代码,时间复杂度
代码
//the code is from chenjh
#include<cstdio>
#include<cstring>
#define MAXN 200035
using namespace std;
char s[MAXN];
int n,f[26],g[MAXN],p[26];
int main(){
scanf("%s",s+1),n=strlen(s+1);
for(int x=0;x<26;x++) s[p[x]=++n]=x+'a';//为了减少特判,在字符串最后人为添加 26 个字母。
for(int i=n-26;i>=0;--i){
g[i]=*p;//默认后继决策点为 a。
for(int x=1;x<26;x++)if(f[x]<f[s[g[i]]-'a']) g[i]=p[x];//枚举第后继决策点,如果答案更小就更新。
i&&(f[s[i]-'a']=f[s[g[i]]-'a']+1,p[s[i]-'a']=i);//转移并更新字符出现的第一个位置。
}
for(int x=*g;x;x=g[x]) putchar(s[x]);//从前往后依次输出。
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· Apache Tomcat RCE漏洞复现(CVE-2025-24813)