news 2026/7/1 22:56:14

打卡信奥刷题(3419)用C++实现信奥题 P10160 [DTCPC 2024] Ultra

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
打卡信奥刷题(3419)用C++实现信奥题 P10160 [DTCPC 2024] Ultra

P10160 [DTCPC 2024] Ultra

题目背景

Tony2 喜欢玩某二字游戏,这一天他在小 C 面前展示他的Ultra \text{Ultra}Ultra

但是小 C 不会Ultra \text{Ultra}Ultra,所以他跑去图图酱一去了。

然后图图失败了

于是小 C 趁 Tony2 不在的时候偷偷地把他的跳跃键和下冲键交换了(

题目描述

Tony2 的操作可以看作下冲和跳跃的组合。

称一个Ultra \text{Ultra}Ultra为一段连续的操作,以下冲开头,然后跳跃和下冲交替,并以下冲结束。由于是Ultra \text{Ultra}Ultra,所以至少要有一次跳跃。

小 C 每次可以将一个Ultra \text{Ultra}Ultra变成uLTRA \text{uLTRA}uLTRA,也就是将这个Ultra \text{Ultra}Ultra的每个下冲变成跳跃,将每个跳跃变成下冲。

小 C 不喜欢Ultra \text{Ultra}Ultra,所以想要使得下冲次数尽量少。

形式化题意

给你一个01 0101序列,你可以进行如下操作若干次(或零次):

  • 将序列中形如101 ⋯ 01 101\cdots0110101的一个子串(即1 ( 01 ) k 1(01)^k1(01)kk ≥ 1 k\ge 1k1)替换成等长010 ⋯ 10 010\cdots1001010(即0 ( 10 ) k 0(10)^k0(10)k)。

你要操作使得1 11的个数尽可能少,输出最少的1 11的个数。

输入格式

一行一个长度为n nnn ≤ 10 6 n\le 10^6n106) 的字符串表示这个01 0101序列。

输出格式

输出一个数表示最少的1 11的个数。

输入输出样例 #1

输入 #1

1010011

输出 #1

3

说明/提示

样例1 11解释:选中该串的前三个字符101 101101,对其操作后该串变为0100011 01000110100011,仅包含3 331 11。容易证明这是最优的。

C++实现

#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;constintMAXN=1e6+10;intn,ans;chars[MAXN];intl[MAXN],r[MAXN],sum[MAXN],cnt;intmain(){scanf("%s",s+1),n=strlen(s+1);for(inti=1;i<=n;i++)if(s[i]=='1')ans++;for(inti=1;i<=n;i++)sum[i]=sum[i-1]+(s[i]&1);for(inti=1,j=1,k=0;i<=n;){if(s[i]!='1'){i++,k=0;continue;}for(j=i;j+2<=n&&s[j+1]=='0'&&s[j+2]=='1';j+=2);if(i!=j){if(cnt&&r[cnt]+k+1==i)r[cnt]=j;elsel[++cnt]=i-k,r[cnt]=j;k=0;}else{if(cnt&&l[cnt]!=r[cnt]&&r[cnt]+1==i)r[cnt]++;elsek++;}i=j+1;}for(inti=1;i<=cnt;i++)ans-=sum[r[i]]-sum[l[i]-1]-1;printf("%d",ans);}

后续

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

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

DeepSeek上下文磁盘缓存:让LLM输入复用降本90%

1. 项目概述&#xff1a;当“重复使用输入”从技术细节变成成本杠杆 这周刷到DeepSeek在API层面落地的 Context Caching on Disk &#xff0c;我盯着屏幕看了三分钟——不是因为看不懂&#xff0c;而是因为太懂了&#xff0c;反而有点恍惚。过去两年做LLM应用落地&#xff0c…

作者头像 李华
网站建设 2026/7/1 22:48:37

好用还专业!2026 最新降AIGC工具测评与推荐

2026年真正好用的AI论文降重与改写工具&#xff0c;核心看降重效果、去AI味、格式保留、学术适配四大指标。综合实测&#xff0c;千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队&#xff0c;覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 …

作者头像 李华
网站建设 2026/7/1 22:47:24

Java RSA密钥格式转换实战:X509与PKCS8互转及加解密应用

1. 项目概述&#xff1a;为什么RSA密钥转换是Java开发者的必修课在Java后端开发、微服务安全通信、API接口签名等场景里&#xff0c;RSA非对称加密算法几乎是标配。但很多开发者&#xff0c;包括我自己在早期&#xff0c;都踩过一个不大不小的坑&#xff1a;从运维同事那里拿到…

作者头像 李华
网站建设 2026/7/1 22:44:10

OpenSSL C语言实现SM2国密算法:从环境配置到加密签名完整指南

1. 项目概述&#xff1a;为什么选择OpenSSL实现SM2&#xff1f;如果你正在用C语言开发涉及国密算法的应用&#xff0c;比如金融终端、物联网设备固件或者需要合规认证的软件系统&#xff0c;那么集成SM2加密功能几乎是绕不开的一环。OpenSSL作为业界广泛使用的密码学工具箱&…

作者头像 李华