T362598 Glaciaxion

Glaciaxion

题目描述

冰封的世界可以看作是 $ n $ 块初始时冷冻的冰川,这些冰川被编号为 1 ∼ n 1 \sim n 1n

探测器抵达后的 $ m $ 秒,每秒都会探测到一块冰川融化。

当一块冰川第一次融化时,探测器返回 N,否则返回 Y

你需要根据探测器按顺序返回的信息,给出字典序最小的冰川融化过程的编号序列。如果不存在这样的编号序列,请输出 No solution报告无解。

输入格式

第一行两个整数 $ n,m $。

接下来一行 $ m $ 个字符(NY,不加分隔),表示探测器按顺序返回的结果。

输出格式

一行一个长度为 $ m $ 的整数序列(空格分隔),表示字典序最小的冰川融化过程的编号序列,或输出 No solution报告无解。

样例 #1

样例输入 #1

3 4
NYNY

样例输出 #1

1 1 2 1

样例 #2

样例输入 #2

5 3
YYY

样例输出 #2

No solution

样例 #3

样例输入 #3

5 7
NNNNNYN

样例输出 #3

No solution

提示

【样例 1 解释】

第 1 秒,1 号冰川融化,这是其首次融化,返回 N

第 2 秒,1 号冰川融化,这不是其首次融化,因为已经在第 1 秒融化过,返回 Y

第 3 秒,2 号冰川融化,这是其首次融化,返回 N

第 4 秒,1 号冰川融化,这不是其首次融化,因为已经在第 1,2 秒融化过,返回 Y

【数据范围】

对于 $ 100% $ 的数据,$ 1 \le n,m \le 10^6 $。

提示:本题开启捆绑测试。

Subtask Sp. Constraints Score 1 n , m ≤ 8 23 2 n , m ≤ 1000 25 3 探测器返回结果只有一种字符 15 4 保证有解 17 5 无特殊限制 20 \def\r{\cr\hline} \def\None{\text{None}} \def\arraystretch{1.5} \begin{array}{c|c|c} \textbf{Subtask} & \textbf{Sp. Constraints} & \textbf{Score}\r \textsf1& n,m\le 8 & 23 \r \textsf2& n,m\le 1000 & 25 \r \textsf3& 探测器返回结果只有一种字符 & 15 \r \textsf4& 保证有解 & 17 \r \textsf5& 无特殊限制 & 20 \r \end{array} Subtask12345Sp. Constraintsn,m8n,m1000探测器返回结果只有一种字符保证有解无特殊限制Score2325151720

解题思路

  1. 首先,根据题目要求,我们需要读入冰川数量 n 和探测次数 m。
  2. 接下来,我们需要读入一个字符串 s,表示探测结果。在这个字符串中,每个字符 ‘Y’ 表示冰川融化,‘N’ 表示冰川没有融化。
  3. 我们使用一个循环来处理每次探测的结果。在循环内部,我们检查以下几种情况:
  4. 如果第一个探测结果就是 ‘Y’,说明第一个冰川就融化了,因此无解,直接输出 “No solution”。
  5. 如果当前冰川没有融化(‘N’),我们将当前的冰川编号添加到 last 中,并递增计数器 count。
  6. 如果 count 超过了 n+1,说明编号超出了冰川数量,也无解,直接输出 “No solution”。
  7. 如果当前冰川融化了(‘Y’),我们添加 ‘1’ 表示第一个融化的冰川到 last 中。
  8. 循环结束后,我们输出最终的冰川融化顺序 last。
#include <bits/stdc++.h>
using namespace std;int main() {int n, m;cin >> n >> m;  // 输入冰川数量 n 和探测次数 mstring last, s;cin >> s;  // 输入探测结果字符串int count = 1;  // 初始化计数器,表示冰川编号for (int i = 0; i < m; i++) {  // 遍历探测结果if (s[0] == 'Y') {  // 如果第一个探测结果就是 'Y',无解cout << "No solution";return 0;}else if (s[i] == 'N') {  // 如果冰川没有融化last += to_string(count);  // 将当前冰川编号添加到 lastlast += ' ';  // 加一个空格,以便后面的输出count++;  // 冰川编号加一if (count > n + 1) {  // 如果编号超出冰川数量,无解cout << "No solution";return 0;}}else if (s[i] == 'Y') {  // 如果冰川融化了last += '1';  // 添加 '1' 表示第一个融化的冰川last += ' ';  // 加一个空格,以便后面的输出}}// 输出最终的冰川融化顺序cout << last;return 0;
}

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

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

相关文章

Keepalive+LVS群集部署

一、Keepalive概述 keepalived 软件起初是专为 LVS 负载均衡软件设计的&#xff0c;用来管理并监控 LVS集群中各个服务节点的状态&#xff0c;后来又加入了可以实现高可用的 VRRP 功能。因此&#xff0c;keepalived 除了能够管理 LVS集群外&#xff0c;还可以为其他服务&#…

内网安全:WMI协议与SMB协议横向移动

目录 网络拓扑图 网络环境说明 WMI协议 SMB协议 域内信息收集 WMI协议 - 横向移动 利用方式一&#xff1a;wmic命令 利用方式一&#xff1a;cscript 利用方式一&#xff1a;impacket SMB协议 - 横向移动 利用方式一&#xff1a;psexec 利用方式二&#xff1a;psexe…

debian apt error: Package ‘xxx‘ has no installation candidate

新的debian虚拟机可能会出现这个问题。 修改apt的source.list&#xff0c;位于/etc/apt/source.list&#xff0c;添加两行&#xff1a; deb http://deb.debian.org/debian bullseye main deb-src http://deb.debian.org/debian bullseye main执行&#xff1a; sudo apt-get u…

Linux下的Shell编程——正则表达式入门(四)

前言&#xff1a; 正则表达式使用单个字符串来描述、匹配一系列符合某个语法规则的字符串。在很多文本编辑器里&#xff0c;正则表达式通常被用来检索、替换那些符合某个模式的文本。 在Linux 中&#xff0c;grep&#xff0c;sed&#xff0c;awk 等文本处理工具都支持…

Ubuntu inotify

inotify 是一个用于监视文件系统事件的机制。它允许你监视文件或目录的变化,如文件的创建、修改、删除、移动等,以及目录的访问权限变化。 安装 在 Ubuntu 中,你需要安装 inotify-tools 包,这是一个包含 inotifywait 和 inotifywatch 等实用工具的软件包。你可以使用以下命…

golang 协程的实现原理

核心概念 要理解协程的实现, 首先需要了解go中的三个非常重要的概念, 它们分别是G, M和P, 没有看过golang源代码的可能会对它们感到陌生, 这三项是协程最主要的组成部分, 它们在golang的源代码中无处不在. G (goroutine) G是goroutine的头文字, goroutine可以解释为受管理的…

MFC为控件添加背景图片

1、 添加选择Bitmap导入图片&#xff0c;图片文件最好放在项目res目录中&#xff0c;同时是BMP格式。上传后的图片在资源视图&#xff0c;命名为IDB_BITMAP_M_BACK。 2、在cpp的C***Dlg::OnPaint()函数下添加如下代码 void C***Dlg::OnPaint() {CPaintDC dc(this); // device…

科技项目验收检测报告获取有哪些注意事项,作用都有哪些?

验收测试报告 软件从研发到结束是一个很长的周期&#xff0c;对于软件想要完成上市或者是交付到用户手中之前我们还需要进行一次全面检测&#xff0c;也就是科技项目验收测试&#xff0c;此测试有着严格的要求&#xff0c;需要第三方软件测评机构来完成&#xff0c;并出具科技…

软件配置安装(破解)--- maven下载配置

检查环境是否已有 首先检查一下电脑里有无maven环境&#xff0c;有的话就不用安装了 查看path环境中没有maven&#xff0c;开始准备接下来的重头戏 下载maven 下载bin.zip版 解压mavenxxxbin.zip &#xff08;建议把解压的文件放在一个文件夹内&#xff0c;命名英文的env…

spring boot集成mqtt协议发送和订阅数据

maven的pom.xml引入包 <!--mqtt--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-integration</artifactId><version>2.3.6.RELEASE</version></dependency><dependency…

Python使用pymysql和sqlalchemy访问MySQL的区别

Python使用pymysql和sqlalchemy访问MySQL的区别 1. 两个数据库连接工具的对比 pymysql和sqlalchemy是两个Python中经常用于与MySQL数据库交互的库。都可以连接MySQL数据库&#xff0c;但它们有明显的区别。 &#xff08;1&#xff09;特点 pymysql是一个Python模块&#xf…

C++,类的特殊函数练习

设计一个Per类&#xff0c;类中包含私有成员:姓名、年龄、指针成员身高、体重&#xff0c;再设计一个Stu类&#xff0c;类中包含私有成员:成绩、Per类对象p1&#xff0c;设计这两个类的构造函数、析构函数和拷贝构造函数。 #include <iostream> using namespace std;cla…

无类别域间路由(Classless Inter-Domain Routing, CIDR):理解IP网络和子网划分(传统的IP地址类ABCDE:分类网络)

文章目录 无类别域间路由&#xff08;CIDR&#xff09;&#xff1a;理解IP网络和子网划分引言传统的IP地址类关于“IP地址的浪费” IP地址与CIDRIP地址概述网络号与主机号CIDR记法&#xff08;网络 网络地址/子网掩码&#xff09;网络和广播地址 CIDR的优势减少路由表项缓解IP…

leetcode做题笔记91. 解码方法

一条包含字母 A-Z 的消息通过以下映射进行了 编码 &#xff1a; A -> "1" B -> "2" ... Z -> "26" 要 解码 已编码的消息&#xff0c;所有数字必须基于上述映射的方法&#xff0c;反向映射回字母&#xff08;可能有多种方法&#xff…

PDF校对:追求文档的精准与完美

随着数字化时代的到来&#xff0c;PDF已经成为了多数机构和个人首选的文件格式&#xff0c;原因在于它的稳定性、跨平台特性以及统一的显示效果。但是&#xff0c;对于任何需要公开或正式发布的文档&#xff0c;确保其内容的准确性是至关重要的&#xff0c;这就是PDF校对显得尤…

item_search_shop-获得淘宝/天猫店铺的所有商品

一、接口参数说明&#xff1a; item_search_shop-获得店铺的所有商品&#xff0c;点击更多API调试&#xff0c;请移步注册API账号点击获取测试key和secret 公共参数 请求地址: https://api-gw.onebound.cn/taobao/item_search_shop 名称类型必须描述keyString是调用key&…

图像分割unet系列------TransUnet详解

图像分割unet系列------TransUnet详解 1、TransUnet结构2、我关心的问题3、总结与展望 TransUnet发表于2021年&#xff0c;它是对UNet非常重要的改进&#xff0c;专为医学图像分割任务设计&#xff0c;特别用于在医学图像中分割器官或病变等解剖结构。 1、TransUnet结构 TransU…

学习网络编程No.2【深入理解TCP/IP】

引言&#xff1a; 北京时间&#xff1a;2023/8/9/13:04&#xff0c;昨天在摆烂中把网络基础相关知识的博客更新&#xff0c;依然还是上不了C站热榜&#xff0c;我估计是因为我账号热度不够没有上榜资格&#xff0c;也可能是因为前段时间没有积极更新&#xff0c;导致周榜被甩出…

【力扣每日一题】2023.8.18 3n块披萨

目录 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 代码&#xff1a; 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 题目给我们一个披萨&#xff0c;分成了3n块&#xff0c;每次我们可以选择一块&#xff0c;而我们的两个小伙伴会拿走我们选的披萨的相邻的…

js识别图片中的文字插件 tesseract.js

使用方法及步骤 1.安装依赖 npm i tesseract.js 2.引入插件 import { createWorker } from tesseract.js;//worker多线程引入这个import Tesseract from tesseract.js;//js单线程引入这个 3.使用插件识别图片 //使用worker线程识别(async () > {console.time()const wo…