当前位置: 首页 > news >正文

AtCoder -arc224_e ABC|AB|A 题解

Solution

对于一个字符串 \(S\),设最优解中被删除的字符按原顺序依次拼接得到的字符串 \(T\)\(S\)最优导出串

我们先考虑最优导出串必然满足的结构。将每个删除的字符串(e.g. \(\texttt{A/AB/ABC}\))看作一个结点。那么会形成一个森林。例如:

\[\texttt{(A(AB)B(ABC)C)(A(ABC)B(A\dots} \]


不难看出以下性质:

  1. 每个点对应原串中一个连续段,该连续段中首尾字符都属于该点
  2. 每个点恰好包含 \(1\)\(\texttt{A}\),位于开头
  3. 从前向后遍历最优导出串的过程等价于按欧拉序分别遍历每棵树
  4. 由于 \(\texttt{A,AB,ABC}\) 中前一个是后一个的前缀,栈顶结点可以在任何时刻合法弹出

考虑使用栈维护在最优导出串上遍历的过程。栈中依次保存当前链上各个节点已经被遍历到的前缀。调整法易证匹配过程满足贪心性质:每新增一个字符,从当前节点开始尝试加入,若失败就弹栈,尝试父节点,以此类推。

现在转而考虑原串。显然原串就是在最优导出串的不同树之间插入了若干个失配\(\texttt{B/C}\)。每个失配字符会把原串分成前后独立的两部分,此时直接清栈即可。结合性质 4 可知答案即为失配字符数量。

由以上论证可知,对于任意原串 \(S\),最优导出串的每个字符一定会被删除,正确性自然得到保证。

Code

#include <bits/stdc++.h>
using namespace std;
const int N=1e6+5;
int a[N],ans,n,t;
char s[N];
// 用数字代替所有可能出现的字符串前缀
// 1: A
// 2: AB
// 3: ABC
void solve(){cin>>s;n=strlen(s),t=ans=0;for(int i=0;i<n;++i) switch(s[i]){case 'A':a[++t]=1;break;case 'B':while(t&&a[t]!=1) --t;if(t&&a[t]==1) a[t]=2;else t=0,++ans;break;case 'C':while(t&&a[t]!=2) --t;if(t&&a[t]==2) --t;else t=0,++ans;}cout<<ans<<'\n';
}
signed main(){int T;cin>>T;while(T--) solve();return 0;
}
http://www.jsqmd.com/news/1181646/

相关文章:

  • DeepSeek-R1-Distill-Qwen-1.5B的安全部署指南:MIT许可证与商业使用注意事项
  • 解决 viteprees 中 vp-doc 样式影响组件预览
  • 反诈AI超级智能体项目
  • PM有效沟通与主动汇报-量化成果和对齐期望
  • 从源码到部署:amd/gpt-oss-20b-BF16-da8w8-torchao-v0.17.0模型量化全流程解析
  • 粮食清仓机可视化监控管理平台解决方案
  • 一文读懂Phi-3-mini-4k-instruct_rai_1.7.1_npu_4K:从模型架构到NPU优化的完整解析
  • 海口窗帘软装施工高标准指南|项念软装本土精细化交付规范 - 小布之大布
  • Abaqus有限元模型导入Unity:50万节点实时云图渲染实战指南
  • ARDY-Core-RP-20FPS-Horizon8商业应用指南:数字孪生、游戏动画与机器人运动规划案例
  • 存储层实战:基于Go实现去中心化存储节点与账本数据管理
  • Inference-Cost-Aware Dynamic Tree Construction for Efficient Inference in Large Language Models
  • 江诗丹顿贵金属表壳翻新维修指南 全国专业腕表服务网点汇总 - 江诗丹顿售后服务中心
  • Instant-NuRec与现有3D重建技术的对比分析:优势与局限性
  • N-gram嵌入技术解析:LongCat-2.0如何提升参数利用效率
  • OpenClaw 公开资讯自动聚合:合规采集到每日行业简报的全链路实践
  • 零阶保持器 vs 一阶保持器:从频率响应到5个实际系统仿真对比
  • 欧姆龙NJ系列PLC如何安装汇川EtherCAT总线伺服SV630N(PDO详细配置步骤)
  • 2026西安GEO搜索公司选型指南:本地生成式引擎优化服务商深度盘点 - 资讯快报
  • AMD Ryzen AI NPU 4K上下文支持:Qwen2.5-Coder-0.5B-Instruct性能优化实战指南
  • AMD NPU推理加速实战:Mistral-7B-v0.3_rai_1.7.1_npu_16K部署教程
  • 企业AI算力工作站/AI大模型训练工作站DLTM企业私有化AI视觉中台建设方案设计
  • 2026劳力士名表回收平台深度测评!南京本地靠谱奢品回收机构梯队盘点 - 每日生活报
  • 【花雕动手做】小学生行空板K10编程科创课程学习案例大纲(6个月24课时|三位小盆友实时直播第6周)
  • 【autonomous】AI 井字棋智能体案例讲解(附完整源码)
  • Instant-NuRec在自动驾驶仿真中的应用:如何生成高质量合成数据
  • 手把手教你学Simulink——智能底盘域控(CDC + EPS + IBC)集成仿真
  • 青岛卖金避坑指南:6条黄金交易铁律,避开变现全套陷阱 - 奢侈品回收中心
  • 怎么用千问做 excel 表格 实操指南,AI 导出鸭解决多方案导出格式错乱痛点
  • Kimi 智能助手新手入门与实战指南