题解:P12550 [UOI 2025] Reversal ABC

news/2025/10/17 15:19:53/文章来源:https://www.cnblogs.com/123asdf123/p/19147932

提供一种不一样的思路,也是 \(O(n)\) 的。

首先注意到几个结论:

  • 注意到一个元素只会往一个方向移动。

  • 注意到如果同一个元素最多只会用一种方式移动,比如对于一个 A,如果用 AB -> BA 交换过了,就不可能再通过 CA -> AC 再交换,以后都只能用 AB -> BA 了。

  • 注意到可以先把在一起的相同元素缩在一起,交换时在一起的相同元素只会往一边交换。

  • 注意到以上结论我想了 1 个小时。

接下来考虑建图,在移动起点和移动终点间连一条线段,权值为操作次数。

比如 CABC,可以建出如下图:

此时答案为选择两两不重叠的线段时的最大权值和(点重叠也算重叠,例子中答案就是选 CA 线段和 BC 线段)。这个直接随便 DP 即可。设 \(f_i\) 表示从 \(1\sim i\) 的最大权值,直接 \(f_i\gets\max(f_{i-1},\max_{(j,i,w)\text{ is a segment}}\{f_{j-1}+w\})\),注意一下我在的代码中是反着 DP 的。

但实际上它不一定是相邻的交换,还有一大堆漏洞。例如 CABABABC,此时第一个 A 可以连向这段区间后面所有的 B,是 \(O(n^2)\) 的。同时,中间的 A 本来也可以和 B 交换,但因为不能选重叠线段就没了。

对于上述问题,可以视为都是 ABABABAB 型导致的(BCBCBCCACACA 同理下面就不说了),逐一修复:

  • “因为不能选重叠线段就没了”,考虑把中间的贡献也带着计算上。例如第一个 A 和第二个 B 连边时权值就变成 \(3\) 而非 \(2\)
  • “关于时间复杂度和边数 \(O(n^2)\)”,考虑再注意到一个结论。
    • 此时只有第一个 A 和最后一个 B 有可能被两边的字符带着交换导致不参与这个大段(例如 CACACACACAC[A BABA B]CBCBCBCBCBCBC),但中间的绝对会交换。

    • 所以只建第一个 A 到最后一个 B、第二个 A 到最后一个 B、第一个 A 到倒数第二个 B、第二个 A 到倒数第二个 B 的边即可。对应边的贡献贡献直接减减少量即可。效果如下图所示:

    • 此时可以直接扫过去计算,所以时间复杂度也跟着变成 \(O(n)\) 的了。

代码:(有亿点丑,不建议看)

#include<bits/stdc++.h>
using namespace std;
namespace estidi{const int mn=1000003;struct num{int tp;long long cnt;};char cc[mn];long long f[mn];vector<num>v,nv[mn];int main(){int tc,n,pre;long long cnt;string s;scanf("%d",&tc);while(tc--){scanf("%d %s",&n,cc);s=cc;pre=s[0]-'A'+1;cnt=0;v.push_back({0,0});for(int i=0;i<n;i++){if(s[i]-'A'+1!=pre){v.push_back({pre,cnt});pre=s[i]-'A'+1;cnt=0;}cnt++;}v.push_back({pre,cnt});v.push_back({0,0});for(int i=1;i<v.size()-1;i++)if(v[i+1].tp==(v[i].tp%3+1)){int pos=i;long long now=0,anow=0,ans=0;while(v[pos].tp==v[i].tp&&v[pos+1].tp==v[i+1].tp){now+=v[pos].cnt;anow+=v[pos+1].cnt;ans+=now*v[pos+1].cnt;pos+=2;}pos-=2;if(i==pos)nv[i].push_back({i+1,ans});elseif(i==pos+2){nv[i].push_back({pos+1,ans});nv[i].push_back({pos-1,ans-now*v[pos+1].cnt});nv[i+2].push_back({pos+1,ans-anow*v[i].cnt});}else{nv[i].push_back({pos+1,ans});nv[i].push_back({pos-1,ans-now*v[pos+1].cnt});nv[i+2].push_back({pos+1,ans-anow*v[i].cnt});nv[i+2].push_back({pos-1,ans-anow*v[i].cnt-now*v[pos+1].cnt+v[i].cnt*v[pos+1].cnt});}i=pos;}for(int i=1;i<v.size();i++){f[i]=max(f[i],f[i-1]);for(int j=0;j<nv[i].size();j++){f[nv[i][j].tp+1]=max(f[nv[i][j].tp+1],f[i]+nv[i][j].cnt);}}printf("%lld\n",f[v.size()-1]);for(int i=1;i<v.size();i++){vector<num>().swap(nv[i]);f[i]=0;}vector<num>().swap(v);}return 0;}
}
int main(){// freopen("string.in","r",stdin);// freopen("string.out","w",stdout);estidi::main();return 0;
}

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

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

相关文章

2025年生物医疗冷链运输厂家推荐排行榜,覆盖药品、临床样本、CAR-T、蛋白、诊断试剂、医药、血液、细胞、芯片运输,冷藏车、冷藏箱、保温箱、干冰、液氮温控及国际进出口运输

2025年生物医疗冷链运输厂家推荐排行榜随着生物医疗技术的飞速发展,冷链运输在药品、临床样本、CAR-T细胞治疗、蛋白、诊断试剂、医药、血液、细胞、芯片等领域的应用越来越广泛。为了确保这些敏感物品的安全和有效性…

编译安装gdb 编译安装gdb

编译安装gdb 编译安装gdb现在我知道你的Python 3.11.9安装在 /usr/local/python3.11。问题在于GDB配置时找不到正确Python开发文件。让我们使用正确的路径来配置:方案一:使用完整的Python路径配置 bash cd…

2025年10月商标注册公司推荐榜:五强对比与中立评测助您高效决策

一、引言 在品牌竞争进入精细化阶段的2025年,商标作为企业核心无形资产,其注册效率与确权稳定性直接影响市场布局节奏。对初创公司、跨境电商卖家、连锁品牌扩张者而言,选择一家合规、高效且能提供后续增值服务的商…

2025 年最新推荐集装箱拖车供应厂家权威榜单:全方位解析优质企业实力,助力高效物流运输选择

在当前集装箱运输行业快速发展但乱象频发的背景下,企业和货主在选择集装箱拖车供应厂家时常常面临诸多困扰。市场上厂家资质参差不齐,部分厂家缺乏规范管理导致服务质量差,运输安全无保障、效率低下、售后不完善等问…

Nginx常用配置

worker_processes 1;events {worker_connections 1024; }http {include mime.types;default_type application/octet-stream;sendfile on;keepalive_timeout 65;server {listen 80;server_name…

单载波系统QPSK的频偏估计算法

频偏对QPSK系统的影响 在单载波QPSK系统中,频偏会导致:星座图旋转:接收信号在复平面上不断旋转 误码率恶化:严重的频偏会导致解调失败 系统失锁:超出锁相环跟踪范围时完全失锁常用频偏估计算法分类 1. 基于导频的…

2025 最新瓷砖厂家排行榜出炉:精选优质品牌权威推荐,助力家居与工程选购决策

在家居消费升级与绿色发展的双重驱动下,瓷砖行业呈现 “品质升级与创新突围” 的发展态势,但市场品牌鱼龙混杂、产品同质化严重的问题仍未解决。消费者与工程采购方面临多重选购痛点:部分产品存在放射性超标、耐磨性…

2025年连铸机设备厂家推荐排行榜,扇形段,大包回转台,钢包中间罐,结晶器总成,振动装置,尾坯夹送装置,移动平台,拉矫机,引锭杆,输送辊道,横向移钢机,钢坯液压剪公司精选!

2025年连铸机设备厂家推荐排行榜:扇形段、大包回转台、钢包中间罐等设备精选随着钢铁行业的不断发展,连铸机设备的需求日益增长。为了满足市场需求,众多厂家纷纷推出各种高性能的连铸机设备。本文将对2025年市场上表…

2025年粉末冶金制品/零件厂家推荐排行榜,高精度粉末冶金零件,高性能粉末冶金制品公司精选!

2025年粉末冶金制品/零件厂家推荐排行榜,高精度粉末冶金零件,高性能粉末冶金制品公司精选!随着科技的不断进步和工业制造技术的提升,粉末冶金制品和零件在各个行业中的应用越来越广泛。从家用电器到汽车零配件,从…

2025 年最新推荐窗帘厂家权威排行榜:精准剖析各品牌核心优势,涵盖定制、智能、遮光等多类型窗帘

随着家居软装需求不断升级,窗帘市场品牌激增但乱象丛生,消费者选购时屡屡陷入困境。许多产品工艺粗糙,针迹杂乱、尺寸偏差大,既无法满足家居美学需求,也难以保障实用性能;部分品牌缺乏创新,产品同质化严重,在抗…

余弦信号的均匀量化和μ律非均匀量化

基于MATLAB实现的余弦信号的均匀量化和μ律非均匀量化的代码。代码包括信号生成、量化过程以及量化误差的计算和可视化。 1. 参数设置 % 信号参数 fs = 1000; % 采样频率 (Hz) T = 1; % 信号时长 (秒) t = 0:1/fs:T-1/…

2025年精密磨床/CNC机械加工厂家推荐排行榜,涵盖铣床/车床/磨削/多轴/复合加工,适合铝/不锈钢/钛合金/铜/钢/塑料/POM/尼龙材料!

2025年精密磨床/CNC机械加工厂家推荐排行榜,涵盖铣床/车床/磨削/多轴/复合加工,适合铝/不锈钢/钛合金/铜/钢/塑料/POM/尼龙材料!随着制造业的快速发展和技术进步,精密磨床和CNC机械加工在各个行业中的应用越来越广…

央视连续多次聚焦,OpenCSG到底有何过人之处?

当一家AI公司被央视连续关注,答案往往不只在技术里,更在它带来的确定性里。 在短暂的时间里,连续获得中国最具权威性的媒体平台——中央电视台(CCTV)的多次深度报道,是企业实力与时代价值高度契合的显著标志。Op…

2025牛客国庆集训派对day5 K E 个人题解 - CUC

You are given a tree... 树上dp #状态压缩 #随机优化 题目描述 给定一棵带边权的树 \(T=(V,E)\),其中 \(|V|=n\),顶点编号为 \(1, 2, \dots, n\),每个顶点 \(i\) 有一个权值 \(a_i\)。 你需要选择一个顶点子集 \(S…

2025年发电机组厂家推荐排行榜,柴油/燃气/船用/静音箱式/移动拖车式/集装箱式/上柴/玉柴/潍柴/康明斯/沃尔沃/道依茨/帕金斯/MTU发电机组公司推荐!

2025年发电机组厂家推荐排行榜,柴油/燃气/船用/静音箱式/移动拖车式/集装箱式/上柴/玉柴/潍柴/康明斯/沃尔沃/道依茨/帕金斯/MTU发电机组公司推荐!随着全球能源需求的不断增长和技术的飞速发展,发电机组行业正迎来新…

2025 人力资源管理系统公司最新推荐榜单:聚焦前沿技术与服务实力,解锁企业人效革新路径

引言在人力资源数字化转型纵深推进的 2025 年,企业对管理系统的需求已从基础功能覆盖转向场景深度适配与数据价值挖掘。然而市场上产品良莠不齐,既有传统系统数据割裂、流程固化的痛点,也有新兴品牌适配性不足的问题…

n8n零基础入门:5分钟搭建你的第一个自动化工作流

你是否厌倦了在应用间反复复制、粘贴数据的重复劳动?是否觉得“自动化”听起来很高大上,但不知从何入手?那么,你来对地方了! n8n是一个强大且开源的工作流自动化工具,你可以把它想象成一个可视化的编程平台,通过…

2025年10月敏感皮肤修复产品推荐榜:五款热门单品深度对比与客观评析

一、引言 对于术后创面护理、反复泛红干痒或屏障受损的消费者而言,选择一款兼顾安全性与修复效率的敏感皮肤修复产品,意味着在缩短恢复周期的同时降低色素沉着风险。2025年第三季度医美市场监测显示,术后修复品类销…

Hudi系列:Hudi核心概念之索引(Indexs)

Hudi系列:Hudi核心概念(版本1.0) •Hudi架构 ◦一. 时间轴(TimeLine)s ▪1.1 时间轴(TimeLine)概念 ▪1.2 Hudi的时间线由组成 ▪1.3 时间线上的Instant action操作类型 ▪1.4 时间线上State状态类型 ▪1.5 时间线官网…

tomcat服务器的应急响应

tomcat的应急响应(一)阻断恶意软件扩散,进行断网处理 隔离与公网的连接 备份关键文件 二,web层排查:定位恶意软件上传路径与入口 (1)排查恶意软件文件的位置 命令:按修改时间进行排查使用find / -mtime -7-name …