news 2026/1/16 9:04:07

2023年信息学奥赛CSP-S2提高组复赛题解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
2023年信息学奥赛CSP-S2提高组复赛题解

2023年信息学奥赛CSP-S2提高组复赛题解

进阶比赛代码量比较大了

零、背景

今天来看看 2023 CSP-S 的题解吧。

A: 枚举

B: 动态规划、next函数、前缀hash、前缀矩阵

C: 模拟

D: 二分套二分+数学公式

一、密码锁(lock)


题意:密码锁有五个拨圈,每个拨圈有 10 个数字,分别是 0 到 9。

假设正确密码是 X,加锁时会使用规则1或者规则2随机转动一次密码锁,从而得到锁车后的密码。

现在告诉你 N 个锁车后的密码(都是使用正确密码按规则得到的),问可能的正确密码有多少个。

规则1:选择一个拨圈转动一个角度

规则2:选择相邻的拨圈转动相同的角度。

思路:枚举

由于锁车后密码不能是自己,所以转动的位置只能是其他 9 个位置。

规则1共有5*9=45种转动方式。

规则2共有4*9=36种转动方式。

unordered_map<ll, ll> h; vector<ll> base = {1, 10, 100, 1000, 10000, 100000}; const int N = 5; const int M = 9; ll Flap(const ll num, int i, int j) { int v = (num / base[i]) % 10; ll V = (v + j) % 10; return num - v * base[i] + V * base[i]; } void SolverOne(const ll num) { // 1 个 for (int i = 0; i < N; i++) { for (int j = 1; j <= M; j++) { const ll newNum = Flap(num, i, j); h[newNum]++; } } // 转动两个 for (int i = 1; i < N; i++) { for (int j = 1; j <= M; j++) { const ll newNum = Flap(Flap(num, i - 1, j), i, j); h[newNum]++; } } }

对于每个锁车后的密码,枚举所有规则的转法,得到疑似的正确密码。

最后统计所有疑似的正确密码,如果都可以有 N 个锁车后密码得到,则就是可能的正确密码。

ll ans = 0; for (auto [k, v] : h) { if (v == n) { ans++; } } printf("%lld\n", ans);

二、消消乐(game)

题意:给一个数组,每次可以消除相邻相同的元素,问所有非空子串中,有多少个子串是可以消除的。

思路:多种解法

一个字符串是否可消除

先思考,对于一个字符串,什么时候是可以消除的。

显然可以贪心,使用一个栈来保存剩余的未消除的前缀或后缀的字符。

如果到最后栈为空,则可以全部消除,否则不可以全部消除。

暴力解法

枚举子串的结束位置,维护一个待消除的栈,每次栈为空时,就代表当前子串是可消除的。

复杂度:O(n2)O(n^2)O(n2)

得分:50分

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

基于 RPA 的企业微信自动化:如何突破官方 API 对外部群功能的限制?

在企业微信的生态开发中&#xff0c;官方 API 对“外部群”的操作权限有着严格的限制。例如&#xff0c;官方接口通常无法实现主动创建外部群、主动向未授权的外部群发送消息&#xff0c;或是在不经过用户确认的情况下进行复杂的群管理。 为了解决这些痛点&#xff0c;基于 RP…

作者头像 李华
网站建设 2026/1/3 21:50:43

27、Elasticsearch聚合与查询:Pipeline聚合和Percolator的深入解析

Elasticsearch聚合与查询:Pipeline聚合和Percolator的深入解析 1. Pipeline聚合 Pipeline聚合是一种特殊的聚合类型,与之前学习的指标聚合和桶聚合有所不同。指标聚合返回指标,桶聚合返回桶,它们都基于返回的文档进行操作。而Pipeline聚合则是对其他聚合的输出及其指标进…

作者头像 李华
网站建设 2025/12/24 12:57:45

28、Elasticsearch 高级功能:Percolator 与空间搜索

Elasticsearch 高级功能:Percolator 与空间搜索 1. Percolator 深入应用 在 Elasticsearch 中,Percolator 注册的查询实际上是文档,我们可以使用普通查询来选择在 percolation 过程中使用哪些存储在 .percolator 类型中的查询。以下是具体的操作步骤和示例。 1.1 更新映…

作者头像 李华
网站建设 2025/12/27 11:36:24

语音克隆技术负责任使用指南:以GPT-SoVITS为例

语音克隆技术负责任使用指南&#xff1a;以GPT-SoVITS为例 在一段仅一分钟的录音后&#xff0c;AI就能“学会”你的声音&#xff0c;用你熟悉的语调说出从未讲过的话——这不是科幻电影的情节&#xff0c;而是今天开源社区中真实可实现的技术能力。随着生成式人工智能的爆发式演…

作者头像 李华
网站建设 2025/12/25 13:24:23

30、Elasticsearch性能优化与扩展全解析

Elasticsearch性能优化与扩展全解析 1. 环境准备与基准测试 1.1 环境配置 在使用Elasticsearch之前,需要进行一些基础配置。首先,修改 /etc/security/limits.conf 文件,添加以下内容: elasticsearch - nofile 64000 elasticsearch - memlock unlimited接着,修改 …

作者头像 李华