16 LCA模拟赛1T1 密码 题解

news/2025/10/5 17:40:12/文章来源:https://www.cnblogs.com/michaele/p/19126777

密码

题面

给定两个由字符 \(0 \sim 9\) 组成的字符串 \(s, t\)\(t\) 是由 \(s\) 中的一段非空连续子串替换为其各个字符的和得到的

现在要求这一段非空连续子串的左右端点,下标从 1 开始

例如

input:
2148
213
output:
2 4

\(1 \le |s| \le 10^5\)

题解

这道题其实还算比较简单,不过我码力太弱,导致赛时写了1.5h

一个关键的观察:替换后的字符和长度不会超过 6 ,因为最多 \(10^5\) 个数,每个数最大是 \(9\) 那么最大数字和就是 \(9 \times 10^5\) 也就是 6 位

那么我们将 \(t\) 分成三段,前面不变的一段,中间被替换的段,后面不变的一段

假如我们知道了中间段的长度,那么也就能够推出 \(s\) 中的左右端点

我们只需要判断前面、后面两个字符串是否相等,以及 \(s\) 中被替换的一段替换后是否和我们枚举的这一段匹配即可

判断前后缀是否相等,可以预处理。快速求 \(s\) 中某一段的区间和,可以用前缀和算

时间复杂度 \(O(36 n)\) 如果交换一下枚举顺序,先枚举左端点,再枚举 \(len\) ,就可以省去一个 6 的常数

code

优化后代码,要注意前导零问题

namespace solution_a {const int N = 1e5 + 10;int n, m;char s[N], t[N];bool pre[N], suc[N];int sum[N];void solve () {scanf ("%s%s", s + 1, t + 1);n = strlen (s + 1), m = strlen (t + 1);for (int i = 1; i <= n; i ++) {sum[i] = sum[i - 1] + s[i] - '0';}// 预处理 pre & sucint p = 1;while (p <= m && s[p] == t[p]) pre[p ++] = 1;p = 1;while (p <= m && s[n - p + 1] == t[m - p + 1]) suc[p ++] = 1;pre[0] = suc[0] = 1;// 枚举,计算for (int l = 1; l <= m; l ++) {int sm = 0;for (int r = l; r <= min (l + 5, m); r ++) {if (r > l && !sm) break; // t 中被替换的这段数不能含有前导零sm = sm * 10 + t[r] - '0';if (suc[m - r] && pre[l - 1] && sm == sum[n - (m - r)] - sum[l - 1]) {cout << l << ' ' << n - (m - r) << endl;return;}}}}}

赛时代码

#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>using namespace std;const int N = 1e5 + 10;int n, m;
char s[N], t[N];
bool pre[N], suc[N];
int sum[N];int main () {// freopen ("password.in", "r", stdin);// freopen ("password.out", "w", stdout);scanf ("%s%s", s + 1, t + 1);n = strlen (s + 1), m = strlen (t + 1);for (int i = 1; i <= n; i ++) {sum[i] = sum[i - 1] + s[i] - '0';}for (int i = 1; i <= m; i ++) {if (s[i] == t[i]) pre[i] = 1;else {break;}}for (int i = n, j = m, cnt = 1; j >= 1 && i >= 1; i --, j --, cnt ++) {if (s[i] == t[j]) suc[cnt] = 1;else {break;}}pre[0] = suc[0] = 1;for (int len = 1; len <= 10; len ++) {for (int l = 1; l + len - 1 <= m; l ++) {int r = l + len - 1;int pw = 0;char tmp[20];int x = sum[n - (m - r)] - sum[l - 1];if (!x) {tmp[ ++ pw] = '0';} else {while (x) {tmp [ ++ pw] = x % 10 + '0';x /= 10;}reverse (tmp + 1, tmp + 1 + pw);}if (!suc[m - r] || !pre[l - 1]) continue;bool ok = 1;for (int j = 1; j <= pw; j ++) {if (tmp[j] != t[l + j - 1]) {ok = 0;break;}}if (ok) {cout << l << ' ' << n - (m - r) << endl;return 0;}}        }return 0;
}

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

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

相关文章

幼儿做爰网站网站建设前的市场分析

酒吧学DJ打碟他有很多种的说法&#xff0c;有些酒吧他是自己招学生&#xff0c;当这样的酒吧在现今是挺少的&#xff0c;也有&#xff0c;但要求很高。还有一种就是说你自己在酒吧里上班的人自己招私人徒弟什么的&#xff0c;那也是就学DJ打碟&#xff0c;那一搬酒吧都是怎么学…

吴恩达深度学习课程一:神经网络和深度学习 第二周:神经网络基础(一)

此分类用于记录吴恩达深度学习课程的学习笔记。 课程相关信息链接如下:原课程视频链接:[双语字幕]吴恩达深度学习deeplearning.ai github课程资料,含课件与笔记:吴恩达深度学习教学资料 课程配套练习(中英)与答案…

阿里开源规则引擎QLExpress

阿里开源规则引擎QLExpress阿里开源规则引擎QLExpress:彻底告别业务规则硬编码动态脚本解析利器,让业务规则变得灵活可配置在当今快速变化的业务环境中,如何高效灵活地处理频繁变动的业务规则成为了每个开发者面临的…

QOJ7411 Bitwise Xor

内部通道(jzyz P6035),与原题唯一不同在于一个也不选也算一种方案。 首先挖掘性质。将\(a_i\)从小到大排序后,\(a_i\oplus a_j\)的最小值一定在某一对相邻\(a_i\),即\(a_i\oplus a_{i+1}\)处取到。 简易证明:排过…

完整教程:SOC-ESP32S3部分:25-HTTP请求

完整教程:SOC-ESP32S3部分:25-HTTP请求pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "M…

为什么要采用“接口 - 抽象类 - 实现类”这种三层结构? - 浪矢

目录核心思想各层职责与优势第一层:接口 (Interface) - 负责“定义契约”,实现“解耦”第二层:抽象类 (Abstract Class) - 负责“封装通用”,实现“复用”第三层:实现类 (Implementation Class) - 负责“具体业务…

对外提供 AI 服务的风险:合规视角与 AI 安全围栏落地指南

对外提供人工智能服务,主要风险集中在提示词攻击与越权操控、不当内容输出与内容合规、敏感信息与个人信息泄露,以及算法合规、备案与可审计义务。自2023年《生成式人工智能服务管理暂行办法》实施后,企业需要把“数…

遵义市做网站设计公司苏州关键词优化排名推广

本文转载自&#xff1a;http://blog.sina.com.cn/s/blog_9a06890901014ol1.html PHP页面跳转一、header()函数 header函数中Location类型的标头是一种特殊的header调用&#xff0c;常用来实现页面跳转 注意&#xff1a;1、location和“:”号间不能有空格&#xff0c;否则不会跳…

网络安全工具与社区讨论月报

本文记录了r/netsec网络安全社区月度讨论帖,包含成员分享的常用安全工具如Burp Suite和Nuclei,以及社区规则和最新动态,为安全从业者提供实用参考。r/netsec 月度讨论与工具分享帖 社区介绍 /r/netsec 是一个由社区…

机器人运动未来与人机交互研究

本文探讨了机器人运动与人机长期交互的前沿研究,包括机器人意图信号系统、机器学习在机器人感知中的应用,以及大规模实验环境对机器人技术发展的重要性。机器人运动未来与人机交互研究 移动机器人正日益普及:它们在…

欧拉路径 欧拉图 小记

欧拉路径 & 欧拉图 小记 P7771 【模板】欧拉路径 欧拉路径:一个图中经过每条边恰好一次的路径,允许经过重复点。 欧拉回路:起点与终点相同的欧拉路径。 对于连通图,欧拉路径有如下判定:对于无向图,恰好有两个…

OI 笑传 #16

The Taste of Kindness指差す先はインナーワールド 1 ABC423F 终于会了不用二项式反演的做法。 我们把这种东西叫什么好呢?预处理容斥系数? 首先这题是不能一般容斥的,因为我们求解的不是并集,而是独立集。 哎哎独…

课后知识整理

课后知识整理Java方法动手动脑与实验问题全记录 静态导入实验 实验:随机数 Math.random() 局限性 (int)(Math.random()*6) 只能生成 0–5,而不能公平生成 1–6。 Random 带种子实验 实验:

cf296b

CF296B Yaroslav and Two Strings link 题意 给定两个由数字和 ? 组成的字符串 \(s,t\),将 ? 替换为数字。若 \(s,t\) 中有 \(s_i>w_i,s_j<w_j(1\leq i,j\leq n)\),则是一种合法的替换。求合法的方案数对 \(…

昆山做网站费用个人工作室怎么注册

这个教程会教您如何设计发光斑驳的字体特效&#xff0c;会教您运用PS滤镜和纹理图片&#xff0c;同时也诠释了如何运用笔刷和图层样式给最终的字体效果增添光感。来&#xff0c;先看看最终效果&#xff01;第一步&#xff1a;创建一个1024*768的新文档。前景色#532118&#xff…

云原生与DevOps融合实践:加速企业数字化转型的加速器 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

第一次使用Ttpora

MarkDown使用教学 两个井号创建二级标题 一个井号创建一级标题就是最上边的那个 字体 两边都加星号,字体就变成黑色了 两边都加星号,字体就变成黑色了 两边都加两个星号,字体就变成黑色了 两边加一个型号,变成斜体…

Apache反向代理

“apache2 网站静态文件” = /var/www/html/ Apache 本身就可以作为一个反向代理服务器来使用,通常是通过 mod_proxy 及其附加模块来实现。 下面是启用 Apache 反向代理的基本步骤: 1. 启用必要的模块 你需要启用以下…

原版 Sunshine+虚拟显示器实现熄屏串流

Sunshine 基地版 是一个很好的软件,自带了虚拟显示器,能够非常方便地实现熄屏串流,但有一个 bug,它会在串流结束后自动开启虚拟显示器的 HDR 功能:https://github.com/qiin2333/Sunshine-Foundation/issues/13 很…

一流的嘉兴网站建设最牛的视频网站建设

目录 第一章&#xff1a;Java Web基础知识1.介绍3.Java Web基本概念 4.常见面试问题第二章&#xff1a;Java Web核心概念和技术1.介绍3.Servlet和JSP4.Web安全5.常见面试问题 第三章&#xff1a;Java Web高级概念和技术1.介绍3.Spring框架4.安全性5.常见面试问题 第四章&#x…