news 2026/5/3 17:09:40

打卡信奥刷题(3205)用C++实现信奥题 P8153 「PMOI-5」送分题/Yet Another Easy Strings Merging

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
打卡信奥刷题(3205)用C++实现信奥题 P8153 「PMOI-5」送分题/Yet Another Easy Strings Merging

P8153 「PMOI-5」送分题/Yet Another Easy Strings Merging

题目背景

本题征集假做法和 hack 数据,如果您用假做法 AC 了,欢迎私信出题人提供 hack。

信息可能有冗余。

——command_block 《考前小贴士》

djy 在看 P8001,看错题了,很自闭,然后就有了这个题。

题目描述

给定nnn个 01 串,每次你可以从某个串开头移除一个字符并把剩下的字符串加入一个新串SSS的末尾。最大化SSS中相邻两个字符相同的对数。

例如你有1010 111两个串,如果你移除第一个串的第一个字符,则010被加入到SSS中。

串可以重复使用。

输入格式

第一行一个正整数nnn表示串的个数。

接下来nnn行,每行一个 01 字符串。

输出格式

一行一个整数表示答案。

输入输出样例 #1

输入 #1

1 1100

输出 #1

4

输入输出样例 #2

输入 #2

5 10010 10000 01110 111111 000000

输出 #2

48

说明/提示

【样例解释】

依次取走第一个字符,SSS的变化过程为100->10000->100000,答案为444

【数据范围】

∣s∣|s|s为字符串sss的长度,sis_isi为第iii个字符串 。
本题采用捆绑测试。

  • Subtask 1(30 pts):n,∑∣si∣≤11n,\sum|s_i|\le 11n,si11
  • Subtask 2(30 pts):n,∑∣si∣≤103n,\sum|s_i|\le 10^3n,si103
  • Subtask 3(30 pts):n,∑∣si∣≤105n,\sum|s_i|\le 10^5n,si105
  • Subtask 4(10 pts):无特殊限制。

对于100%100\%100%的数据,1≤n≤1061\le n\le 10^61n106n≤∑∣si∣≤106n\le \sum |s_i|\le 10^6nsi106∀i∈[1,n]\forall i\in [1,n]i[1,n]∣si∣≥1|s_i|\ge 1si1

C++实现

#include<bits/stdc++.h>#defineilinline#definereregister#defineOrzputs("Szt Lps Fjh AK IOI!");#defineIOSios::sync_with_stdio(false),cin.tie(0),cout.tie(0);usingnamespacestd;constintINF=1e9+7,mod=1e9+7;constintmaxn=2e5+10,MAXN=3e3+10,N=1e6+10;typedeflonglongLL;string s[N];LL ans,n;intL[N],sum=0;boolf1,f2;intsum1,sum2,sum3,sum4;signedmain(){IOS cin>>n;for(reinti=1;i<=n;i++)cin>>s[i],s[i]="$"+s[i],L[i]=s[i].length()-1;for(reinti=1;i<=n;i++)sum+=L[i];if(!(sum^n))returnprintf("0"),0;for(reinti=1;i<=n;i++){intcnt=0;for(reintj=L[i]-1;j>=2;j--){if(s[i][j]==s[i][j+1])cnt++;ans+=cnt;}}for(reinti=1;i<=n;i++){if(L[i]==1)continue;// 长度为 1 的串删完就成了空串,没用if(s[i][L[i]]=='0')sum1+=L[i]-1;elsesum2+=L[i]-1;for(reintj=2;j<=L[i];j++){if(s[i][j]=='0')sum3++;elsesum4++;}if(s[i][2]=='0')f1=true;elseif(s[i][2]=='1')f2=true;}if(f1&&f2)ans+=max(min(sum3,sum1)+min(sum4-1,sum2),min(sum3-1,sum1)+min(sum4,sum2));elseif(f1)ans+=min(sum3-1,sum1)+min(sum4,sum2);elseans+=min(sum3,sum1)+min(sum4-1,sum2);cout<<ans<<endl;}

后续

接下来我会不断用C++来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现,记录日常的编程生活、比赛心得,感兴趣的请关注,我后续将继续分享相关内容

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/3 17:06:35

百度文库助手:三步解锁文档自由,让你的学习效率翻倍

百度文库助手&#xff1a;三步解锁文档自由&#xff0c;让你的学习效率翻倍 【免费下载链接】baidu-wenku fetch the document for free 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wenku 还在为百度文库的付费弹窗和广告干扰而烦恼吗&#xff1f;当你急需一份…

作者头像 李华
网站建设 2026/5/3 17:06:18

如何快速配置游戏模组:一站式模组管理器终极指南

如何快速配置游戏模组&#xff1a;一站式模组管理器终极指南 【免费下载链接】XXMI-Launcher Modding platform for GI, HSR, WW and ZZZ 项目地址: https://gitcode.com/gh_mirrors/xx/XXMI-Launcher 你是否曾经为管理多个游戏模组而感到头疼&#xff1f;每次游戏更新都…

作者头像 李华
网站建设 2026/5/3 17:04:35

别再死记硬背!用5个经典C语言改错案例,彻底搞懂指针与内存管理

5个C语言指针与内存管理经典案例&#xff1a;从错误中掌握底层原理 指针和内存管理是C语言的核心难点&#xff0c;也是区分初级与中级开发者的关键能力。许多学习者通过死记硬背常见错误模式来应付考试&#xff0c;却难以在实际项目中避免类似问题。本文将剖析5个典型场景&…

作者头像 李华
网站建设 2026/5/3 17:02:38

从哨兵2号到国产高分六号,Python遥感解译全栈工作流:环境配置→辐射定标→大气校正→NDVI/NDWI提取→随机森林分类→精度验证,一步不漏

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Python遥感解译全栈工作流概述 Python 已成为遥感影像解译领域事实上的核心编程语言&#xff0c;其丰富的生态&#xff08;如 rasterio、GDAL、scikit-learn、torchgeo 和 earthengine-api&#xff09…

作者头像 李华
网站建设 2026/5/3 17:02:35

VESTA避坑指南:渲染慢、图不清晰?可能是你的‘Atoms’和‘Isosurfaces’选项卡没设对

VESTA性能优化实战&#xff1a;从渲染卡顿到高清可视化的进阶技巧 刚导入那个300原子的金属有机框架结构时&#xff0c;我的VESTA界面直接卡成了幻灯片——旋转视图要等5秒才能响应&#xff0c;等值面像融化的蜡一样糊在一起。这场景想必每个处理复杂体系的计算化学研究者都经历…

作者头像 李华
网站建设 2026/5/3 17:01:25

解决Azure DevOps中`.dacpac`部署的冲突问题

在使用Azure DevOps进行数据库部署时,常常会遇到一些冲突问题,尤其是在使用.dacpac文件进行版本控制和发布时。这篇博客将详细介绍如何解决在Azure SQL数据库部署过程中遇到的一个常见问题:Rejected updates were rejected because the remote contains work that you do no…

作者头像 李华