CCF-CSP真题《202305-5 闪耀巡航》思路+python,c++满分题解

 想查看其他题的真题及题解的同学可以前往查看:CCF-CSP真题附题解大全

试题编号:202305-5
试题名称:闪耀巡航
时间限制:5.0s
内存限制:512.0MB
问题描述:

问题描述

西西艾弗岛旅游公司最近推出了一系列环绕西西艾弗岛的闪耀游轮航线。普通的航线通常是一条环线,以便乘客在漫长的旅途之后回到出发点;而闪耀航线则多为有惊无险的单程。因此,西西艾弗岛旅游公司也允许乘客自己选择一些能够返回起点的航线组合。具体而言,西西艾弗岛旅游公司推出的航线可以用仅包含小写字母的字符串表示,其中每一种字母代表航线中途经的一个目的地。例如,航线 aqua 表示从 a 出发,途经 q 和 u,最终返回 a 的航线。西西艾弗岛旅游公司目前运营着 N 条这样的航线,分别用字符串 s1,s2,⋯,sN 表示。我们定义,一条航线的长度为相应的字符串长度减 1,如航线 aqua 的长度为 3。

西西艾弗岛旅游公司为了鼓励乘客乘坐其游轮,推出了一项集章活动。乘坐其游轮途经部分目的地(可以是搭乘的航线的起点或终点)时,可以获得一枚印章。我们用字符串 t 表示所有参与集章活动的目的地。当乘客集齐 t 中所有字母对应的印章时,有机会抽取免费住宿豪华酒店等幸运大奖。

为了确定集章活动给公司带来的预期利润,西西艾弗岛旅游公司想知道:对于每条航线 si,从 si 的起点出发搭乘 si 到达 si 的终点,再经过多条航线(可以是 0 条)完成集章后返回 si 的起点,需要乘坐的航线组合的最小总长度。

输入格式

从标准输入读入数据。

输入的第一行包含一个正整数 N 和一个字符串 t,保证 1≤N≤105,1≤|t|≤10,且 t 仅包含不重复的小写字母。

接下来 N 行,每行包含一个字符串 si,表示第 i 条航线。保证 2≤|si|≤106,∑i=1N|si|≤106。

输出格式

输出到标准输出中。

输出包含 N 行,每行输出一个正整数表示对应航线组合的最小总长度,或者输出 -1 表示不存在满足要求的航线组合。

样例输入

6 au
aqua
glass
hug
shiny
sparkling
youth

样例输出

3
14
14
14
26
14

样例输入

7 i
nonstop
perfect
rocket
thrilling
train
trapper
tripper

样例输出

16
16
11
-1
16
22
11

子任务

对于 10% 的数据,保证 1≤N≤10,1≤|t|≤5。

对于另外 10% 的数据,保证 1≤N≤1000,|t|=1。

对于另外 20% 的数据,保证 1≤|t|≤5。

对于 100% 的数据,保证 1≤N≤105,1≤|t|≤10,2≤|si|≤106,∑i=1N|si|≤106,si 和 t 仅包含小写字母,且 t 中字母不重复。

真题来源:闪耀巡航

感兴趣的同学可以如此编码进去进行练习提交

c++满分题解:

#include <bits/stdc++.h>
using namespace std;
using LL = long long;const LL inf = 1e18;int main(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int n;string t;cin >> n >> t;vector<int> id(26, -1);int cnt = 0;for(auto &i : t){id[i - 'a'] = cnt;++ cnt;}vector<vector<array<int, 3>>> edge(26);vector<array<int, 4>> query(n);for(int i = 0; i < n; ++ i){string s;cin >> s;int st = s.front() - 'a';int ed = s.back() - 'a';int sign = 0;int len = s.size() - 1;for(auto &i : s){if (id[i - 'a'] != -1){sign |= (1 << id[i - 'a']);}}edge[ed].push_back({st, len, sign});query[i] = {st, ed, sign, len};}int up = (1 << cnt);vector<vector<vector<LL>>> dis(26, vector<vector<LL>>(26, vector<LL>(up, inf)));for(int i = 0; i < 26; ++ i){dis[i][i][up - 1] = 0;priority_queue<array<LL, 3>> team;team.push({0, i, up - 1});while(!team.empty()){array<LL, 3> top = team.top();team.pop();LL distance = -top[0];int u = top[1], sign = top[2];if (dis[i][u][sign] != distance)continue;for(auto &e : edge[u]){int v = e[0], len = e[1], si = e[2];int nxtsign = (sign ^ (sign & si));if (dis[i][v][nxtsign] > distance + len){dis[i][v][nxtsign] = distance + len;team.push({-dis[i][v][nxtsign], v, nxtsign});}}}}for(int i = 0; i < n; ++ i){LL ans = inf;int sign = query[i][2];for(int s = sign; s; s = (s - 1) & sign)ans = min(ans, dis[query[i][0]][query[i][1]][s]);ans = min(ans, dis[query[i][0]][query[i][1]][0]);if (ans == inf)ans = -1;else ans += query[i][3];cout << ans << '\n';}return 0;
}

 运行结果:

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

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

相关文章

51单片机锅炉监控系统仿真设计( proteus仿真+程序+原理图+报告+讲解视频)

51单片机锅炉监控系统仿真设计( proteus仿真程序原理图报告讲解视频&#xff09; 1.主要功能&#xff1a;讲解视频2.仿真3. 程序代码4. 原理图5. 设计报告6. 设计资料内容清单&&下载链接资料下载链接&#xff08;可点击&#xff09;&#xff1a; 51单片机锅炉监控系统仿…

SpringCloud-Alibaba之OSS对象存储服务

阿里云的 OSS 服务进行云端的文件存储 用户认证需要上传图片、首页轮播需要上传图片&#xff0c;OSS分布式文件服务系统可以提供服务。 一、依赖 <dependency><groupId>com.alibaba.cloud</groupId><artifactId>aliyun-oss-spring-boot-starter</…

idea文件比对

idea文件比对 1.项目内的文件比对2.项目间的文件比对3. 剪切板对比4. 版本历史(不同分支和不同commit)对比 1.项目内的文件比对 在项目中选择好需要比对的文件(类)&#xff0c;然后选择Compare Files Mac下的快捷键是Commandd&#xff0c; 这样的比对像是git冲突解决一样 …

【Linux】多路IO复用技术③——epoll详解如何使用epoll模型实现简易的一对多服务器(附图解与代码实现)

在正式阅读本篇博客之前&#xff0c;建议大家先按顺序把下面这两篇博客看一下&#xff0c;否则直接来看这篇博客的话估计很难搞懂 多路IO复用技术①——select详解&如何使用select模型在本地主机实现简易的一对多服务器http://t.csdnimg.cn/BiBib多路IO复用技术②——poll…

k8s:二进制搭建 Kubernetes v1.20

目录 1 操作系统初始化配置 2 部署 etcd 集群 2.1 准备签发证书环境 2.2 生成Etcd证书 3 部署 docker引擎 4 部署 Master 组件 5 部署 Worker Node 组件 k8s集群master01&#xff1a;192.168.30.105 kube-apiserver kube-controller-manager kube-scheduler etcd k8s集…

《进化优化》第6章 进化策略

文章目录 6.1 &#xff08;11) 进化策略6.2 1/5规则&#xff1a;推导走廊问题 6.3 μ1进化策略6.4 μλ和&#xff08;μ,λ&#xff09;进化策略6.5 自身自适应进化策略协方差阵自适应CMA 6.1 &#xff08;11) 进化策略 假设f(x)是随机向量x的函数,我们想要最大化适应度f(x).…

【移远QuecPython】EC800M物联网开发板调用网络API(使用SIM卡联网并调用高德地图API的定位坐标转换)

【移远QuecPython】EC800M物联网开发板调用网络API&#xff08;使用SIM卡联网并调用高德地图API的定位坐标转换&#xff09; 高德API使用方法&#xff1a; 文章目录 API相关配置SIM卡联网网络操作API调用 高德地图API产品介绍适用场景使用限制使用说明坐标转换 附录&#xff…

第12章_MySQL数据类型精讲

文章目录 1 MySQL中的数据类型2 整数类型2.1 类型介绍2.2 可选属性2.2.1 M2.2.2 UNSIGNED2.2.3 ZEROFILL 2.3 适用场景2.4 如何选择演示代码 3 浮点类型3.1 类型介绍 本章的内容测试建议使用 MySQL5.7进行测试。3.2 数据精度说明3.3 精度误差说明 4 定点数类型4.1 类型介绍4.2 …

哈希表----数据结构

引入 如果你是一个队伍的队长&#xff0c;现在有 24 个队员&#xff0c;需要将他们分成 6 组&#xff0c;你会怎么分&#xff1f;其实有一种方法是让所有人排成一排&#xff0c;然后从队头开始报数&#xff0c;报的数字就是编号。当所有人都报完数后&#xff0c;这 24 人也被分…

D-Link账号密码泄露

构造payload&#xff1a; /getcfg.php SERVICESDEVICE.ACCOUNT&attackture%0D%0AAUTHORIZED_GROUP%3D1漏洞证明&#xff1a; 文笔生疏&#xff0c;措辞浅薄&#xff0c;望各位大佬不吝赐教&#xff0c;万分感谢。 免责声明&#xff1a;由于传播或利用此文所提供的信息、技…

IDEA集成Docker插件打包服务镜像与运行【附Docker命令汇总】

Docker官网 Docker官网&#xff1a;https://www.docker.com/ Docker Hub官网&#xff1a;http://hub.docker.com/ 什么是Docker Docker 是一个开源的容器引擎&#xff0c;可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者和系统管理员在笔记本上编…

ELK搭建以及使用教程(多pipiline)

1、环境准备 服务器&#xff1a;Centos7 Jdk版本&#xff1a;1.8 Es版本&#xff1a;7.12.1 kibana版本&#xff1a;7.12.1 logstash版本:7.12.1 IP地址安装软件192.168.50.211Es&#xff0c;Kibana&#xff0c;logstash 2、安装docker 安装步骤参考&#xff1a;https:…

在Node.js中,什么是中间件(middleware)?它们的作用是什么?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

【音视频 | opus】opus编解码库(opus-1.4)详细介绍以及使用——附带解码示例代码

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…

第G7周:Semi-Supervised GAN 理论与实战

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客 &#x1f366; 参考文章&#xff1a;365天深度学习训练营-第G7周&#xff1a;Semi-Supervised GAN 理论与实战&#xff08;训练营内部成员可读&#xff09; &#x1f356; 原作者&#xff1a;K同学啊|接…

Centralized Feature Pyramid for Object Detection解读

Centralized Feature Pyramid for Object Detection 问题 主流的特征金字塔集中于层间特征交互&#xff0c;而忽略了层内特征规则。尽管一些方法试图在注意力机制或视觉变换器的帮助下学习紧凑的层内特征表示&#xff0c;但它们忽略了对密集预测任务非常重要的被忽略的角点区…

【论文精读】PlanT: Explainable Planning Transformers via Object-Level Representations

1 基本信息 院校&#xff1a;德国的图宾根大学 网站&#xff1a;https://www.katrinrenz.de/plant 2 论文背景 2.1 现有问题 现在的基于学习的方法使用高精地图和BEV&#xff0c;认为准确的&#xff08;达到像素级的pixel-level&#xff09;场景理解是鲁棒的输出的关键。re…

Java自学第1课:安装JDK+Eclipse

1 引言 在学习前&#xff0c;我想说一句&#xff0c;那就是为什么要学习Java。 每个人的出发点都不同&#xff0c;对于做信息化的工程技术人员来说&#xff0c;java不懂&#xff0c;就没法干项目。 尽管有c和matlab等基础&#xff0c;但java看起来与这些语言都不太一样。 做…

基于单片机的智能饮水机系统

收藏和点赞&#xff0c;您的关注是我创作的动力 文章目录 概要 一、系统设计方案分析2.1 设计功能及性能分析2.2设计方案分析 二、系统的硬件设计3.1 系统设计框图系统软件设计4.1 总体介绍原理图 四、 结论 概要 现在很多学校以及家庭使用的饮水机的功能都是比较单一的&#…

MySQL InnoDB数据存储结构

1. 数据库的存储结构&#xff1a;页 索引结构给我们提供了高效的索引方式&#xff0c;不过索引信息以及数据记录都是保存在文件上的&#xff0c;确切说是存储在页结构中。另一方面&#xff0c;索引是在存储引擎中实现的&#xff0c;MySQL服务器上的存储引擎负责对表中数据的读…