P11361 [NOIP2024] 编辑字符串 题解

P11361 [NOIP2024] 编辑字符串 题解

题目传送门

我的博客

前言

笔者在考场上的时候,心态完全崩了。

现在回过头来,才发觉其实静下心来,这道题也不是不能得分。

笔者补题时借鉴了题解,补完后为了方便自己理解于是作此篇题解。

思路

在一个字符串中交换两个相邻的字符
......
两个字符串中对应位置字符相同的出现次数最多能有多少?

显然,这个问题需要我们贪心求解。只要可以匹配,就尽量匹配。因为前面的匹配成功与否并不影响后面不相邻的字符。

于是我们可以预处理位置数组 \(p[i]\),记录当前位置能否和前面匹配。如果可以匹配就把他们并到一个段里面。显然,当 \(t_{i} =0\) 的时候不能匹配,此时我们就可以单独给它开一段,表示它把前后两个字符分开。

再预处理每一段中 \(0,1\) 的个数。这一步可以通过判断当前 \(s_i\)\(0\) 或者为 \(1\) 来更新。类似前缀和的思想,让对应数组 \(+1\) 即可。

最后从左到右,判断 \(s_1,s_2\) 是否有相同的未使用的字符。如果有,那么 ans++,同时让未使用的字符数量减 \(1\)。如果没有,那么直接让当前段中还有的字符数量减 \(1\)

警示后人

  • 数组名称不要混乱。

  • \(\color{red}{\text{注意字符串下标问题!}}\)

  • 第一个字符要单独处理,位置也是!

  • 多测记得清空!

代码

#include<cstdio>
#include<iostream>
#include<cstring>
#include<string>
using namespace std;
#define int long long 
#define ___ __int128
#define INF 0x3f3f3f3f3f3f3f3f 
inline int Read(){int x=0,f=1;char c=getchar();while(!isdigit(c)){if(c=='-')f=-1;c=getchar();}while(isdigit(c)){x=x*10+c-48;c=getchar();}return x*f;
}
inline void Write(int x){if(x<0) {putchar('-');x=-x;}if(x>9) Write(x/10);putchar(x%10+'0');
}
const int N=1e5+10;
string s1,s2,t1,t2;
int T,n,ans;
int f[N][10],p[N][5];
/*
f[i][1]:s1 中 1 的个数,f[i][2]: s1 中 0 的个数
f[i][3]:s2 中 1 的个数,f[i][4]: s2 中 0 的个数
p[i][1]: s1 中的 p[i]
p[i][2]: s2 中的 p[i]
*/
void solve(){ans=0;//清空!!for(int i=0;i<=n;i++){//清空for(int j=0;j<=4;j++) f[i][j]=0;for(int j=0;j<=2;j++) p[i][j]=0;}n=Read();cin>>s1>>s2>>t1>>t2;s1=" "+s1,s2=" "+s2,t1=" "+t1,t2=" "+t2;//笔者这里字符串习惯从下标 1 开始//第一个字符单独处理if(s1[1]=='1') f[1][1]++;else f[1][2]++;if(s2[1]=='1') f[1][3]++;else f[1][4]++;p[1][1]=p[1][2]=1;//处理 s1for(int i=2;i<=n;i++){//注意下标从第二个字符开始!笔者调了好久!!if(t1[i]=='1'&&t1[i-1]=='1') p[i][1]=p[i-1][1];//如果可以交换else p[i][1]=i;//否则自己单独开一段if(s1[i]=='1') f[p[i][1]][1]++;//1 的个数else f[p[i][1]][2]++;// 0 的个数}//处理 s2,同上for(int i=2;i<=n;i++){if(t2[i]=='1'&&t2[i-1]=='1') p[i][2]=p[i-1][2];else p[i][2]=i;if(s2[i]=='1') f[p[i][2]][3]++;else f[p[i][2]][4]++;}//从左到右贪心匹配for(int i=1;i<=n;i++){if(f[p[i][1]][2]&&f[p[i][2]][4]) ans++,f[p[i][1]][2]--,f[p[i][2]][4]--;else if(f[p[i][1]][1]&&f[p[i][2]][3]) ans++,f[p[i][1]][1]--,f[p[i][2]][3]--;		else if(f[p[i][1]][2]) f[p[i][1]][2]--,f[p[i][2]][3]--;else f[p[i][1]][1]--,f[p[i][2]][4]--;}printf("%lld\n",ans);
} 
signed main(){T=Read();while(T--){solve();//多测函数好!}return 0; 
}

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

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

相关文章

2025年靠谱的不锈钢链轮生产加工优质厂家推荐榜单

2025年靠谱的不锈钢链轮生产加工优质厂家推荐榜单不锈钢链轮行业概述不锈钢链轮作为工业传动系统中的关键部件,广泛应用于食品机械、制药设备、化工装置、船舶制造等领域。随着工业自动化水平的提升,市场对高品质不锈…

2025年优质的上海裸眼3DLED显示屏厂家推荐及选择参考

2025年优质的上海裸眼3DLED显示屏厂家推荐及选择参考随着数字显示技术的快速发展,裸眼3D LED显示屏已成为商业展示、广告传媒、展览展示等领域的热门选择。2025年,上海作为中国科技创新中心,涌现出一批在裸眼3D LED…

2025年专业的漂珠硅晶防火风管最新TOP品牌厂家排行

2025年专业的漂珠硅晶防火风管最新TOP品牌厂家排行 随着建筑安全标准的不断提高,防火风管在中央空调通风系统中的应用越来越广泛。漂珠硅晶防火风管因其优异的防火性能、轻质高强、耐腐蚀等特点,成为市场上的主流选…

2025 年温度传感器厂家最新推荐排行榜:高精度 K 型热电偶、热电阻、铂电阻、PT100、PT1000、DS18B20、NTC、烤箱温度传感器优质品牌精选

引言 温度传感器作为工业生产、智能家居、医疗设备等领域的关键组件,其性能直接影响设备运行效率与调控精度。近期,行业权威协会开展了温度传感器品牌专项测评,通过对近百家品牌的产品进行多维度检测,最终筛选出综…

2025年热门的工业拟薄水铝石厂家最新TOP实力排行

2025年热门的工业拟薄水铝石厂家最新TOP实力排行 拟薄水铝石作为一种重要的工业材料,广泛应用于催化剂载体、吸附剂、陶瓷添加剂等领域。随着环保政策的推进与新能源产业的快速发展,市场对高性能拟薄水铝石的需求持…

2025年口碑好的高速波纹管设备厂家最新热销排行

2025年口碑好的高速波纹管设备厂家最新热销排行 在塑料机械制造领域,高速波纹管设备因其高效、节能、环保等优势,已成为市政工程、农业灌溉、电力通信等行业的重要选择。随着全球基础设施建设的加速推进,市场对高质…

2025年正规的卧式暗装风机盘管厂家最新用户好评榜

2025年正规的卧式暗装风机盘管厂家最新用户好评榜 随着建筑节能与室内空气品质需求的提升,卧式暗装风机盘管作为中央空调末端设备的核心品类,其性能与服务质量成为用户关注重点。以下是基于2025年市场调研与用户真实…

2025年口碑好的轻型卡车天窗厂家推荐及选择参考

2025年口碑好的轻型卡车天窗厂家推荐及选择参考 随着物流运输行业的快速发展,轻型卡车作为城市配送和短途运输的主力车型,其舒适性和功能性需求日益提升。天窗作为提升驾驶舱通风和采光的重要配置,已成为许多车主和…

2025 年热电偶厂家最新推荐榜单:聚焦技术实力与产品品质,精选优质企业助力采购决策T 型热电偶/J 型热电偶公司推荐

引言 当前,工业制造、智能设备、医疗电子等领域对温度测量的精准性与稳定性需求持续攀升,热电偶作为关键温度传感元件,市场规模不断扩大。但市场上制造商数量众多,产品品质参差不齐,部分厂商技术积累薄弱、品控松…

2025年比较好的成都岩棉板品牌厂家排行榜

2025年成都岩棉板品牌厂家排行榜:优质供应商权威推荐 岩棉板作为建筑保温防火的核心材料,其质量与供应商的技术实力直接影响工程安全与节能效果。成都作为西南地区建筑产业中心,聚集了一批技术成熟、口碑良好的岩棉…

session,cookie,token的区别

session、cookie、token的区别存储位置:Cookie存在客户端(浏览器),Session存在服务器,Token可存客户端(如浏览器/APP)。 核心作用:Cookie用于传递身份凭证+存储少量数据,Session通过会话ID关联用户状态,Toke…

接口测试的目的

核心目的是在软件开发生命周期早期发现缺陷,降低修复成本,并通过验证系统组件间的交互来提升整体的稳定性,安全性和效率,尤其适用于前后端分离,微服务架构及高复杂度系统

2025年质量好的链板输送机厂家最新权威实力榜

2025年质量好的链板输送机厂家最新权威实力榜 链板输送机作为现代工业生产中不可或缺的自动化输送设备,广泛应用于汽车制造、物流仓储、食品加工、医药化工等多个行业。随着智能制造和工业4.0的快速发展,市场对链板…

2025年比较好的隐藏天地铰链厂家最新推荐排行榜

2025年比较好的隐藏天地铰链厂家最新推荐排行榜随着家居装修品质要求的不断提升,隐藏式天地铰链作为高端五金配件的重要组成部分,其市场需求持续增长。优质的天地铰链不仅能提供流畅的开合体验,更能确保柜门长期使用…

2025年靠谱的桥式起重机厂家推荐及选购参考榜

2025年靠谱的桥式起重机厂家推荐及选购参考榜 在工业制造、物流运输、能源开发等领域,桥式起重机作为核心搬运设备,其性能与可靠性直接影响生产效率和安全性。2025年随着智能化和绿色制造的推进,选择技术领先、服务…

安装jmeter

1.安装JDK ,如我安装的地址为:D:\jdk-11.0.29; 2. 设置环境变量: (1) 在用户变量中,新建变量名“JAVA_HOME”,变量值为:安装JDK的目录,如我的为:“D:\jdk-11.0.29;” 。 (2) 再新建变量名为“CLASSPATH”,变量值…

2025年知名的高压反渗透膜最新TOP品牌厂家排行

2025年知名的高压反渗透膜最新TOP品牌厂家排行高压反渗透膜作为水处理领域的核心组件,在海水淡化、工业废水处理、饮用水净化等领域发挥着不可替代的作用。随着全球水资源短缺问题日益严峻,反渗透膜技术不断创新,各…

JMETER设置中文界面有哪两种办法

Jmeter设置中文界面有临时设置和永久设置两种方法,具体如下: • 临时设置:打开Jmeter软件,在顶部菜单栏中找到“Options”选项,点击后在下拉菜单中选择“Choose Language”,然后在弹出的语言选择窗口中找到“Chi…

2025年靠谱的树枝修剪机厂家推荐及选择参考

2025年靠谱的树枝修剪机厂家推荐及选择参考随着园林绿化行业的快速发展,树枝修剪机作为专业园林维护设备,其市场需求持续增长。选择一台性能可靠、操作便捷的树枝修剪机不仅能提高工作效率,还能确保作业安全。本文将…

2025年比较好的橱柜阻尼骑马抽最新TOP厂家排名

2025年比较好的橱柜阻尼骑马抽最新TOP厂家排名随着家居行业对品质和细节要求的不断提升,橱柜五金配件尤其是阻尼骑马抽的市场需求持续增长。优质的阻尼骑马抽不仅能提升橱柜的使用体验,还能延长整体使用寿命。2025年…