P9503 『MGOI』Simple Round I | B. 魔法照相馆

题目背景

照片留下了值得留恋的瞬间,但对于魔法士来说最重要的是向前看。——殿堂魔法士 W

题目描述

小 M 正在准备入学所必需的魔法士证件,因此他来到了纵深巷的魔法照相馆。

在等待的时候,小 M 注意到魔法照相馆有三个幕布,颜色从左到右分别是红色、蓝色和白色。店主 zx 先生会根据客人的需求拉上或拉下这三个幕布,如下图所示:

幕布摆放在左边,按照红蓝白的顺序排列。人则坐在幕布右边,而 zx 先生则站在最右边给人拍照。幕布从右往左数,第一个没有拉上的幕布颜色将成为照片的背景颜色。

每次 zx 先生拉上或拉下一个幕布都需要消耗一个时间单位,而拍照不消耗时间。小 M 已经知道了他前面所有总共 n n n 个客人的需求。在初始状态为 全部拉下 的情况下,请你帮助小 M 计算他至少需要等待多少个时间单位。

输入格式

第一行一个整数 n n n

第二行一个由 RBW 三个大写字母组成的长度为 n n n 的字符串,其中第 i i i 个字符表示第 i i i 个客人的需求,R 是红色,B 是蓝色,W 是白色。

输出格式

一行一个整数,表示小 M 至少需要等待的时间单位。

样例 #1

样例输入 #1

5
BBRWB

样例输出 #1

5

提示

【样例 1 解释】

开始三个幕布是全部拉下的。

  • 第一位客人要求蓝色,所以拉上白色,消耗一个时间单位。
  • 第二位客人要求蓝色,无需改动。
  • 第三位客人要求红色,所以在之前基础上拉上蓝色,消耗一个时间单位。
  • 第四位客人要求白色,所以拉下白色,消耗一个时间单位。
  • 第五位客人要求蓝色,所以拉上白色,拉下蓝色,消耗两个时间单位。

共计消耗五个时间单位。

1.题目分析

概括下题意:第一行输入一个整数代表客人的个数,第二行输入字符串代表每一个客人的需求,白, 蓝,红,三者有顺序层级的关系,初始状态全部拉下,要考虑每一次操作之后对顺序的影响,所以每一操作耗时可能不一样,求所有客人操作之后消耗的总时长。

2.题目思路

设置一个长度为3的整型数组,代表幕布的状态,索引数:0 表示红,1 表示 蓝色,2表示白色。
索引对应的值:1代表拉下,为0代表拉上。所以将三个元素初始化为1。
定义一个足够长的字符数组,用于存储用户的操作数。
写一个for循环代表每一个用户输入的需求,嵌套一个switch,分别对需求为白,蓝,红进行分类讨论即可。比较简单,这里就不过多展开了,大家可以自行查看代码。
最后循环结束打印时长即可。

3.代码演示

#include <stdio.h>int main() {//0 表示红,1 表示 蓝色,2表示白色,数值为1代表拉下,为0代表拉上int arr[3] = {1, 1, 1};int n;int t = 0;scanf("%d", &n);char ch[100000];scanf("%s", ch);for (int i = 0; i < n; ++i) {switch (ch[i]) {case 'W':if (arr[2] == 0) {arr[2] = 1;t++;}break;case 'B':if (arr[2] == 0) {//白色拉上if (arr[1] == 0) {arr[1] = 1;t++;}} else {arr[2] = 0;t++;if (arr[1] == 0) {arr[1] = 1;t++;}}break;case 'R'://白色的情况if (arr[2] == 0) {//蓝色if (arr[1] == 0) {//红色if (arr[0] == 0) {arr[0] = 1;t++;}} else {arr[1] = 0;t++;//红色if (arr[0] == 0) {arr[0] = 1;t++;}}} else {arr[2] = 0;t++;//蓝色if (arr[1] == 0) {//红色if (arr[0] == 0) {arr[0] = 1;t++;}} else {arr[1] = 0;t++;//红色if (arr[0] == 0) {arr[0] = 1;t++;}}}break;default:break;}}//打印消耗的总时长printf("%d", t);return 0;
}

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

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

相关文章

建筑行业是不是一个夕阳产业?一建值得考吗?

建筑行业行业是不是夕阳产业&#xff0c;提出这个问题的人已经了解了现在建筑行业的不景气&#xff0c;从3年疫情到放开疫情管控&#xff0c;2023年是疫情放开后最好的一年。 建筑上下游各产业链行业失业率攀升&#xff0c;房屋建筑土地没人卖&#xff0c;多修建公共建筑&…

RISC-V公测平台发布:如何在SG2042上玩转OpenMPI

About HS-2 HS-2 RISC-V通用主板是澎峰科技与合作伙伴共同研发的一款专为开发者设计的标准mATX主板&#xff0c;它预装了澎峰科技为RISC-V高性能服务器定制开发的软件包&#xff0c;包括各种标准bencmark、支持V扩展的GCC编译器、计算库、中间件以及多种典型服务器应用程序。…

音频客观感知MOS对比,对ViSQOL、PESQ、MosNet(神经网络MOS分)和polqa一致性对比和可信度验证

原创&#xff1a;转载需附链接&#xff1a; https://blog.csdn.net/qq_37100442/article/details/132057139?spm1001.2014.3001.5502 一、背景 Mos分评价音质重要指标&#xff0c;最近也有很多机构和公司在研究适合自己的评价体系。目前Mos分主要分为主观评测和客观感知评价。…

6.6 实现卷积神经网络LeNet训练并预测手写体数字

模型架构 代码实现 import torch from torch import nn from d2l import torch as d2lnet nn.Sequential(nn.Conv2d(1,6,kernel_size5,padding2),nn.Sigmoid(),#padding2补偿5x5卷积核导致的特征减少。nn.AvgPool2d(kernel_size2,stride2),nn.Conv2d(6,16,kernel_size5),nn.S…

黑马大数据学习笔记5-案例

目录 需求分析背景介绍目标需求数据内容DBeaver连接到Hive建库建表加载数据 ETL数据清洗数据问题需求实现查看结果扩展 指标计算需求需求指标统计 可视化展示BIFineBI的介绍及安装FineBI配置数据源及数据准备 可视化展示 P73~77 https://www.bilibili.com/video/BV1WY4y197g7?…

宋浩概率论笔记(三)随机向量/二维随机变量

第三更&#xff1a;本章的内容最重要的在于概念的理解与抽象&#xff0c;二重积分通常情况下不会考得很难。此外&#xff0c;本次暂且忽略【二维连续型随机变量函数的分布】这一章节&#xff0c;非常抽象且难度较高&#xff0c;之后有时间再更新。

回归决策树模拟sin函数

# -*-coding:utf-8-*- import numpy as np from sklearn import tree import matplotlib.pyplot as pltplt.switch_backend("TkAgg") # 创建了一个随机数生成器对象 rng rngnp.random.RandomState(1) print("rng",rng) #5*rng.rand(80,1)生成一个80行、1列…

恒盛策略:上交所过户费收费标准?

随着我国股市的发展&#xff0c;股票买卖所的过户费成为了广阔投资者关注的焦点之一。在我国股票商场中&#xff0c;上交所是最重要的买卖所之一&#xff0c;因而上交所过户费的收费规范备受到了广泛关注。那么&#xff0c;上交所过户费的收费规范究竟怎么拟定&#xff1f;对投…

【Docker】Docker私有仓库的使用

目录 一、搭建私有仓库 二、上传镜像到私有仓库 三、从私有仓库拉取镜像 一、搭建私有仓库 首先我们需要拉取仓库的镜像 docker pull registry 然后创建私有仓库容器 docker run -it --namereg -p 5000:5000 registry 这个时候我们可以打开浏览器访问5000端口看是否成功&…

python-opencv对极几何 StereoRectify

OpenCV如何正确使用stereoRectify函数 函数介绍 用于双目相机的立体校正环节中&#xff0c;这里只谈谈这个函数怎么使用&#xff0c;参数具体指哪些函数参数 随便去网上一搜或者看官方手册就能得到参数信息&#xff0c;但是&#xff01;&#xff01;相对关系非常容易出错&…

【MySQL】事务的多版本并发控制(MVCC)

目录 一、数据库并发的三种场景二、MVCC2.1 三个记录隐藏字段2.2 undo log&#xff08;撤销日志&#xff09;2.3 模拟MVCC2.3.1 模拟更新&#xff08;update&#xff09;2.3.1 模拟删除&#xff08;delete&#xff09;2.3.1 模拟插入&#xff08;insert&#xff09;2.3.1 模拟查…

maven中常见问题

文章目录 一、配置项提示二、父子打包三、打包之后不显示target四、自定义打包之后的jar包名称五、整个项目打包5.1、父项目管理插件和微服务打包 一、配置项提示 SpringBoot中提示错误信息 表示的是SpringBoot中的注释提示没有配置&#xff01;那么可以来使用一下springboot官…

安全学习DAY14_JS信息打点

信息打点——前端JS框架 文章目录 信息打点——前端JS框架小节概述-思维导图JS安全概述什么是JS渗透测试&#xff1f;前后端差异JS安全问题流行的Js框架如何判定JS开发应用&#xff1f; 测试方法&#xff08;JS文件的获取以及分析方法1、手工搜索分析2、半自动Burp分析插件介绍…

problem(3):python IDE和python解释器

为什么写这篇文章呢&#xff1f;遇到了下面的问题&#xff0c;相同的解释器&#xff0c;如果运行angr库的代码&#xff0c;会出现 这样的情况&#xff0c;但是用spyder IDE 会显示正常&#xff0c;很奇怪 应该就是IDE的原因 IDE的循环导入问题 检查IDE配置&#xff1a; 如果可…

引流精准客源方法,学会这一招就够你用的了

科思创业汇 大家好&#xff0c;这里是科思创业汇&#xff0c;一个轻资产创业孵化平台。赚钱的方式有很多种&#xff0c;我希望在科思创业汇能够给你带来最快乐的那一种&#xff01; 第一&#xff0c;你要想一想&#xff0c;你想吸引什么样的人&#xff1f; 您的排水目的是推…

构建语言模型:BERT 分步实施指南

学习目标 了解 BERT 的架构和组件。了解 BERT 输入所需的预处理步骤以及如何处理不同的输入序列长度。获得使用 TensorFlow 或 PyTorch 等流行机器学习框架实施 BERT 的实践知识。了解如何针对特定下游任务(例如文本分类或命名实体识别)微调 BERT。为什么我们需要 BERT? 正…

Vue3+SpringBoot快速开发模板

起因&#xff1a;个人开发过程经常会使用到Vue3SpringBoot技术栈来开发项目&#xff0c;每次在项目初始化时都需要涉及一些重复的整理工作&#xff0c;于是结合一些个人觉得不错的前后端模板进行整合&#xff0c;打通一些大多数项目都需要的实现的基础功能&#xff0c;以便于快…

Spring 事务管理

目录 1. 事务管理 1.1. Spring框架的事务支持模型的优势 1.1.1. 全局事务 1.1.2. 本地事务 1.1.3. Spring框架的一致化编程模型 1.2. 了解Spring框架的事务抽象&#xff08;Transaction Abstraction&#xff09; 1.2.1. Hibernate 事务设置 1.3. 用事务同步资源 1.3.1…

协议,序列化,反序列化,Json

文章目录 协议序列化和反序列化网络计算器protocol.hppServer.hppServer.ccClient.hppClient.cclog.txt通过结果再次理解通信过程 Json效果 协议 协议究竟是什么呢&#xff1f;首先得知道主机之间的网络通信交互的是什么数据&#xff0c;像平时使用聊天APP聊天可以清楚&#x…

springboot 对接 minio 分布式文件系统

1. minio介绍 Minio 是一个基于Go语言的对象存储服务。它实现了大部分亚马逊S3云存储服务接口&#xff0c;可以看做是是S3的开源版本&#xff0c;非常适合于存储大容量非结构化的数据&#xff0c;例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等&#xff0c;而一个对象…