news 2026/5/11 23:46:09

打卡信奥刷题(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/5/11 20:07:29

Kotaemon A/B测试框架搭建:优化用户体验

Kotaemon A/B测试框架搭建&#xff1a;优化用户体验 在智能客服系统日益普及的今天&#xff0c;一个常见的尴尬场景是&#xff1a;用户反复提问&#xff0c;AI却始终“答非所问”&#xff1b;或者新上线的模型看似更强大&#xff0c;但实际转化率反而下降。这种“感觉变好但数据…

作者头像 李华
网站建设 2026/5/1 7:42:12

28、Python虚拟环境、包管理与进程处理全解析

Python虚拟环境、包管理与进程处理全解析 1. Python虚拟环境管理 在Python开发中,虚拟环境是一个非常重要的工具,它可以帮助我们创建独立的Python运行环境,避免不同项目之间的依赖冲突。下面我们将介绍如何使用 virtualenv 创建不同版本的Python虚拟环境。 1.1 创建Pyt…

作者头像 李华
网站建设 2026/5/11 3:33:27

43、深入理解自定义集合与迭代器

深入理解自定义集合与迭代器 1. 集合类型概述 在编程中,集合是存储和管理数据的重要工具。不同的集合类型适用于不同的场景,下面我们来详细了解几种常见的集合类型。 2. 字典集合(Dictionary ) 字典集合是一种存储名值对的集合类型,其中名称作为唯一的键,用于查找对应…

作者头像 李华
网站建设 2026/5/11 1:02:40

44、C 迭代器与反射编程详解

C# 迭代器与反射编程详解 迭代器基础 迭代器是 C# 中一个强大的特性,它允许你以一种简洁的方式遍历集合。以下是一个简单的示例,展示了如何使用迭代器来遍历 C# 原始类型: CSharpPrimitiveTypes primitives = new CSharpPrimitiveTypes(); foreach (string primitive in…

作者头像 李华
网站建设 2026/5/3 2:58:08

制造业知识管理系统改造:Kotaemon成功案例分析

制造业知识管理系统改造&#xff1a;Kotaemon成功案例分析 在一家大型装备制造企业的车间里&#xff0c;一名新入职的技术员面对突发的设备停机束手无策。他翻遍了层层嵌套的共享文件夹&#xff0c;却找不到对应机型的故障处理流程&#xff1b;打了三个电话请教“老师傅”&…

作者头像 李华