news 2026/9/22 12:49:11

打卡信奥刷题(2554)用C++实现信奥 P2133 天作之合

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
打卡信奥刷题(2554)用C++实现信奥 P2133 天作之合

P2133 天作之合

题目背景

生活就是一次 A*,你是我的第一个目标状态。——小明

题目描述

在小明的学校中,有若干个女生。小明认为每个女生的特征可以抽象为一个666位的数字串,其中不重复地包含1∼61\sim616666个数码。

在小明心中,有一个理想的女生,她的特征数字串为AAA。如果串YYY是串XXX交换两个连续的数码所得,那么我们认为特征数字串XXXYYY相似。首先,小明找到了他的同桌,她的特征数字串为SSS。每次,小明会寻找一个特征数字串和当前串相似的女生,直到寻找到适合他的(即特征数字串和AAA相同或相似的)。定义每个女生的合适程度为找到此人至少需要找女生的数量(包括他的同桌和此人自己)。显然,合适程度数值越小的女生越适合小明。

然而,小明觉得老天不会轻易地让他找到,所以他认为合适程度第二小的才是他最合适的伴侣(也就是小红)。那么,请你帮他写一个程序,求出对于小明,小红的合适程度是多少。

输入格式

111行,一个特征数字串AAA

222行,一个特征数字串SSS

输出格式

一行,一个非负整数表示小红的合适程度。

输入输出样例 #1

输入 #1

123654 123456

输出 #1

3

说明/提示

样例解释:

最短的两个「合适的数字串」分别是454\tt 454454545\tt 545545,故答案为333


对于全部数据,保证串AAASSS合法,且保证能找到。

C++实现

#include<bits/stdc++.h>usingnamespacestd;string a,b;intdata[10];map<char,int>m;intmain(){cin>>a>>b;a=' '+a;//加上空格,个人习惯使用s[1]~s[6]b=' '+b;intans=0,cnt=0;for(inti=1;i<=6;i++)m[a[i]]=i;//map标记每个数字正确的位置for(inti=1;i<=6;i++)data[i]=m[b[i]];//同上,data[i]为b[i]应该在的位置for(inti=1;i<=6;i++)for(intj=i+1;j<=6;j++)if(data[j]<data[i])ans++;//求逆序对个数if(ans<2)ans+=2;//特判,如果没交换或者只交换了一次,必定属于最优解加2的情况else{for(inti=1;i<=6;i++)if(abs(data[i]-m[a[i]])==ans)cnt++;//特殊情况出现if(cnt==1)ans+=2;//只有一个数在移动}cout<<ans;return0;}

后续

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

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

23、跨平台 Unix 系统管理与自动化工具实践

跨平台 Unix 系统管理与自动化工具实践 在管理多样化的 *nix 机器基础设施时,可以结合使用 SSH 密钥、NFS 挂载的源目录和跨平台 Python 代码,以下是详细步骤。 系统管理步骤 创建 SSH 公钥 :在用于管理机器的系统上创建 SSH 公钥。不同平台的操作可能有所不同,可参考操…

作者头像 李华
网站建设 2026/9/21 21:36:29

30、Python 并发编程:线程、进程与调度全解析

Python 并发编程:线程、进程与调度全解析 1. 线程的使用 在 Python 中,线程是实现并发的一种方式。下面通过几个具体的例子来详细介绍线程的应用。 1.1 多线程 ARPing 以下代码展示了如何使用多线程进行 ARPing 操作: worker.start() #spawn pool of arping threads f…

作者头像 李华
网站建设 2026/9/22 8:19:40

rt-linux下的“硬实时”的hrtimer通知机制

一、背景 之前的一些rt-linux的博客已经讲到,由于rt-linux下注册的hrtimer的回调默认都并非在硬中断里直接执行,而是被放到的软中断里去执行,这会导致一些实时性的问题,甚至一些系统基础的操作如常见的一些用户态定时睡眠的一些操作在rt-linux下变得有些波动。另外,有些抓…

作者头像 李华
网站建设 2026/9/22 9:08:32

60、C 编程综合知识解析

C# 编程综合知识解析 1. 并发类与集合 在 C# 编程中, System.Collections.Concurrent 命名空间提供了一系列并发类,这些类在多线程环境下能高效地处理数据集合。主要的并发类包括: - ConcurrentQueue<T> :实现了先进先出(FIFO)的队列,可在多线程环境下安全地…

作者头像 李华
网站建设 2026/9/21 13:01:10

3、矩阵、狄拉克符号与经典及量子计算基础

矩阵、狄拉克符号与经典及量子计算基础 1 方阵相关性质 方阵具有多种重要性质,基于这些性质可定义出在经济学和金融领域有广泛应用的特殊方阵。假设 (A) 是一个 (NN) 的可逆复值方阵,与之相关的矩阵如下: |矩阵类型|符号|分量规则|示例(以 (A = \begin{pmatrix}1 & …

作者头像 李华
网站建设 2026/9/22 0:12:42

6、量子力学原理:自由度、希尔伯特空间与算子

量子力学原理:自由度、希尔伯特空间与算子 1. 自由度:不确定性的基石 量子力学的基础在于自由度。在量子计算机中,经典计算机的单个 1 位(x = {0, 1})在量子力学里被提升为量子二进制自由度。一个比特的两个值 x = {0, 1} 共同构成了二进制自由度 F = {0, 1}。 1.1 多比…

作者头像 李华